2012-05-18 39 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