使用LINQ在两个数组中获取不同的常用项

Ye *_*ung 20 c# linq

例如,我有两个数组:

var list1 = string[] {"1", "2", "3", "4", "5", "6"};
var list2 = string[] {"2", "3", "4"};
Run Code Online (Sandbox Code Playgroud)

我想做的是 -

  1. 从获得共同项目list1list2(例如,{ "2", "3", "4"})
  2. 得到不同的物品list1list2(例如,{ "1", "5", "6"})

所以我试过LINQ和 -

var listDiff = list1.Except(list2); //This gets the desire result for different items
Run Code Online (Sandbox Code Playgroud)

但,

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

有任何想法吗?

Guf*_*ffa 26

不知何故,你从其他地方得到了这个结果.(也许你正在写出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);
Run Code Online (Sandbox Code Playgroud)

输出:

2
3
4
Run Code Online (Sandbox Code Playgroud)