2012-05-18 8 views
19

Zum Beispiel habe ich zwei Arrays:Holen unterschiedliche und gemeinsame Elemente in zwei Arrays mit LINQ

var list1 = string[] {"1", "2", "3", "4", "5", "6"}; 
var list2 = string[] {"2", "3", "4"}; 

Was ich versuche zu tun ist -

  1. Erhalten Sie gemeinsame Elemente von list1 und list2 (z. { "2", "3", "4"})
  2. Erhalten verschiedene Artikel list1 und list2 (z. { "1", "5", "6"})
0.123.

Also habe ich mit LINQ versucht und -

var listDiff = list1.Except(list2); //This gets the desire result for different items 

Aber

var listCommon = list1.Intersect(list2); //This doesn't give me desire result. Comes out as {"1", "5", "6", "2", "3", "4"}; 

Irgendwelche Ideen?

+1

Es sollte funktionieren. 'list1.Intersect (list2)' gibt "2", "3", "4" zurück. – nemesv

+0

Sie vermissen 2 'neue' in Ihrer Syntax. Das wird nicht kompiliert. Verwenden Sie: 'var list2 = new string [] {" 2 "," 3 "," 4 "};' –

+0

Dumm mich. Tatsächlich funktioniert Intersect, nur dass der andere Teil, der das Array in ein Textfeld ausgibt, unordentlich wurde. Danke allen! –

Antwort

21

Irgendwie haben Sie das Ergebnis von woanders. (Vielleicht schreiben Sie zunächst den Inhalt von listDIff aus, und dachte, dass es von listCommon war.) Die Intersect Methode gibt Ihnen die Elemente, die in beiden Listen vorhanden ist:

var list1 = new string[] {"1", "2", "3", "4", "5", "6"}; 
var list2 = new string[] {"2", "3", "4"}; 
var listCommon = list1.Intersect(list2); 
foreach (string s in listCommon) Console.WriteLine(s); 

Ausgang:

2 
3 
4 
Verwandte Themen