2013-03-20 3 views
6

У меня есть два списка list1 и List2Concat из двух списка с помощью LINQ

List1 содержит

1 a 
2 b 
3 c 
4 d 

List2 содержит

3 c 
4 d 
5 e 

Я хочу следующий список с помощью LINQ

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

Я использую этот вар песни1 = новый список { новый TST {Id = 1, Val = "а"}, новый TST {Id = 2, Val = "б"}, новый TST {Id = 3, Val = "c"}, новый tst {Id = 4, Val = "d"} }; var list2 = new Список {new tst {Id = 3, Val = "c"}, новый tst {Id = 4, Val = "d"}, новый tst {Id = 5, Val = "e" }}; –

ответ

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

откуда приходит l1. Неверный ответ –

+0

Извините, что это была опечатка, см. Править – 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

какой-то текст для объяснения материала не повредит ..... – Jaap

2

Поскольку я не вижу этот ответ здесь я выложу его ...

Лучший способ удаления дубликатов при объединении двух списков вместе 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(); 

Остальные ответы работают, но Linq имеет встроенный способ сделать это.

Смежные вопросы