2012-11-22 25 views
49

Qual è il modo più semplice per confrontare gli elementi di due liste dire A e B l'uno con l'altro e aggiungere gli elementi che sono presenti in B ad A solo se non sono presenti in UN? ListaIl modo più semplice per formare un'unione di due elenchi

Per illustrare, prendere un = {1,2,3} lista B = {3,4,5}

Così, dopo l'operazione di AUB voglio lista A = {1,2, 3,4,5}

risposta

77

Se si tratta di una lista, è anche possibile utilizzare AddRange metodo.

var listB = new List<int>{3, 4, 5}; 
var listA = new List<int>{1, 2, 3, 4, 5}; 

listA.AddRange(listB); // listA now has elements of listB also. 

Se avete bisogno di nuova lista (ed escludere il duplicato), è possibile utilizzare Union

var listB = new List<int>{3, 4, 5}; 
    var listA = new List<int>{1, 2, 3, 4, 5}; 
    var listFinal = listA.Union(listB); 

Se avete bisogno di nuova lista (e includere il duplicato), è possibile utilizzare Concat

var listB = new List<int>{3, 4, 5}; 
    var listA = new List<int>{1, 2, 3, 4, 5}; 
    var listFinal = listA.Concat(listB); 

Se sono necessari elementi comuni, è possibile utilizzare Intersect.

var listB = new List<int>{3, 4, 5}; 
var listA = new List<int>{1, 2, 3, 4}; 
var listFinal = listA.Intersect(listB); //3,4 
+0

Da questa risposta si apre prima durante la ricerca di operazioni correlate, sarebbe bello aggiungere [Intersect] (https://msdn.microsoft.com/en-us/library/bb460136 (v = vs. 110) .aspx) – KOTIX

+0

Grazie per la spiegazione dettagliata di tutti i metodi correlati. Grazie mille. continuate così. –

24

Il modo più semplice è quello di utilizzare il metodo Union di LINQ:

var aUb = A.Union(B).ToList(); 
5

Penso che questo è tutto ciò che ha realmente bisogno di fare:

var listB = new List<int>{3, 4, 5}; 
var listA = new List<int>{1, 2, 3, 4, 5}; 

var listMerged = listA.Union(listB); 
7

Usando di LINQ Union

Enumerable.Union(ListA,ListB); 

o

ListA.Union(ListB); 
Problemi correlati