2013-03-20 15 views
6

ho due lista Lista1 e Lista2Concat della lista di secondo utilizzando LINQ

List1 contiene

1 a 
2 b 
3 c 
4 d 

Lista2 contiene l'elenco

3 c 
4 d 
5 e 

io voglio seguente utilizzando LINQ

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

Sto usando questo var list1 = new List { nuovo tst {Id = 1, Val = "a"}, nuova tst {Id = 2, Val = "b"}, nuova tst {Id = 3, Val = "c"}, new tst {Id = 4, Val = "d"} }; var list2 = nuovo Elenco {new tst {Id = 3, Val = "c"}, nuovo tst {Id = 4, Val = "d"}, nuovo tst {Id = 5, Val = "e" }}; –

risposta

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

da dove arriva l1. Risposta errata –

+0

Scusa che era un refuso, vedi modifica – 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

del testo per spiegare le cose non farebbe male ..... – Jaap

2

Dato che io non vedo questa risposta qui i post-it ...

Il modo migliore per rimuovere i duplicati, mentre la fusione due liste insieme è 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(); 

Il resto delle risposte funziona, ma Linq ha un modo integrato per farlo.