2013-03-20 12 views
6

Mam dwie listy lista1 i lista2Concat dwa listy za pomocą LINQ

List1 zawiera

1 a 
2 b 
3 c 
4 d 

Lista2 zawiera

3 c 
4 d 
5 e 

I chcą poniższej listy przy użyciu LINQ

1 a 
2 b 
3 c 
4 d 
5 e 
+0

ja pomocą tego var lista1 = nową listę { nowy TST {J = 1, Val = "A"} nowy TST {J = 2, Val = "b"} nowy TST {Id = 3, Val = "c"}, new tst {Id = 4, Val = "d"} }; var list2 = nowa lista {nowa tst {Id = 3, Val = "c"}, nowa tst {Id = 4, Val = "d"}, nowa tst {Id = 5, Val = "e" }}; –

Odpowiedz

8
List1.Concat(List2.Where(l2 => !List1.Contains(l2))).ToList() 
+0

skąd l1 pochodzi. Zła odpowiedź –

+0

Przepraszam, że był to błąd literowy, patrz edytuj – Oliver

1
var Lst = List1.Concat(List2.Where(l2 => List1.All(x => x.Id != l2.Id))).ToList(); 
0
var listOne = new List<string>();    
var listTwo = new List<string>(); 

var merge = new List<string>(); 

merge.AddRange(listOne.Concat(listTwo)); 
+3

tekst wyjaśniający, że nie zaszkodzi ..... – Jaap

2

Ponieważ nie widzę tę odpowiedź tutaj wyślę go ...

Najlepszym sposobem, aby usunąć duplikaty podczas łączenia dwóch list razem jest Enumerable.Union:

var foo = new List<char> { 'a', 'b', 'c', 'd' }; 
var bar = new List<char> { 'c', 'd', 'e' }; 

var result = foo.Union(bar).ToList(); 

Reszta odpowiedzi działa, ale Linq ma wbudowany sposób, aby to zrobić.