2009-04-03 10 views
18
List<int> a = 1,2,3 
List<int> b = 2,4,5 

output 
1,3,4,5 
+0

Should 3 występować również w wyjście? – Dave

+0

Zgaduję, że tak ... to będzie w nieinterpretujących danych. –

+0

To ma znacznie lepszą odpowiedź tutaj https://stackoverflow.com/questions/5620266/the-opposite-of-intersect – Amicable

Odpowiedz

37

Sztuką jest wykorzystanie Except z przecięcia dwóch list.

To powinno dać listę elementów non-przecinających:

var nonIntersecting = a.Union(b).Except(a.Intersect(b)); 
4

Sprawdzony:

List<int> a = new List<int>(){1, 2, 3}; 
List<int> b = new List<int>(){2, 4, 5}; 


List<int> c = a.Except(b).Union(b.Except(a)).ToList(); 
+0

Chcę znaleźć nieprzecinającą się część –

+0

Zaktualizowałem moją odpowiedź. –

+0

Odpowiedź Reeda Copseya jest lepsza! –

-1

inny sposób:

List<int> a = new List<int> { 1, 2, 3 }; 
List<int> b = new List<int> { 2, 4, 5 }; 
var nonIntersecting = a.Union(b) 
    .Where(x => !a.Contains(x) || !b.Contains(x)); 
+0

to jest o (n^3) ........................................ –

Powiązane problemy