2012-11-22 14 views
49

Jaki jest najprostszy sposób porównania elementów z dwóch list, powiedzmy, A i B, i dodaj elementy, które są obecne w B do A, tylko jeśli nie są one obecne w ZA?Najprostszy sposób utworzenia związku z dwóch list

Aby zilustrować Przenieś listę A = {1,2,3} lista B = {3,4,5}

więc po AUB operacji We chce Lista A = {1,2, 3,4,5}

Odpowiedz

77

Jeśli jest to lista, można również użyć AddRange metody.

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. 

Jeśli potrzebujesz nowej listy (i nie duplikat), można użyć Union

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

Jeśli potrzebujesz nowej listy (i zawierać duplikat), można użyć Concat

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

Jeśli potrzebujesz wspólnych przedmiotów, możesz użyć 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

Ponieważ ta odpowiedź wyskakuje pierwszy podczas wyszukiwania związanych z tym działań, byłoby miło, aby dodać Przecięcie [] (https://msdn.microsoft.com/en-us/library/bb460136 (V = vs. 110) .aspx) – KOTIX

+0

Dziękujemy za szczegółowe wyjaśnienie wszystkich powiązanych metod. Dziękuję Ci bardzo. tak trzymaj. –

5

Myślę, że to wszystko co naprawdę trzeba zrobić:

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

var listMerged = listA.Union(listB); 
7

Używanie LINQ na Union

Enumerable.Union(ListA,ListB); 

lub

ListA.Union(ListB); 
Powiązane problemy