2012-05-18 68 views
19

例如,我有兩個數組:得到不同的共同項目兩個數組與LINQ

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

我試圖做的是 -

  1. 獲得從list1list2共同項目(例如,{ 「2」, 「3」, 「4」})
  2. 獲取不同的項目list1list2(例如{ 「1」, 「5」, 「6」})

所以我試着LINQ和 -

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

但是,

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

任何想法?

+1

它應該工作。 'list1.Intersect(list2)'返回「2」,「3」,「4」。 – nemesv

+0

你的語法中缺少2'new'。這不會編譯。使用:var list2 = new string [] {「2」,「3」,「4」};' –

+0

愚蠢的我。事實上,Intersect的作品,只是將數組輸出到文本框的其他部分搞亂了。謝謝大家! –

回答

21

不知何故,你從別的地方得到了這個結果。 (也許你正在寫出來的listDIff內容第一,並認爲它是從listCommon)的Intersect方法確實給你存在於兩個列表中的項目:

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); 

輸出:

2 
3 
4