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

output 
1,3,4,5 
+0

si le 3 aussi être dans la sortie? – Dave

+0

Je suppose que oui ... ce serait dans les données non-intersection. –

+0

Cela a une bien meilleure réponse ici https://stackoverflow.com/questions/5620266/the-opposite-of-intersect – Amicable

Répondre

37

L'astuce consiste à utiliser Except avec l'intersection des deux listes.

Cela devrait vous donner la liste des éléments disjoints:

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

Testée et approuvée:

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

je veux trouver la partie non intersection –

+0

J'ai mis à jour ma réponse. –

+0

La réponse de Reed Copsey est la meilleure! –

-1

Une autre façon:

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

c'est o (n^3) ........................................ –

Questions connexes