当diff集中有多个时,List.Except只返回1个项目

时间:2014-07-23 23:11:26

标签: c# list except

在C#中尝试执行除两个字符串列表之外的操作。有一些差异,请参见下图。在idx 2和19注意这些不一样。但List.Except方法只返回最后一个差异。

我称之为:var x = expList.Except(actList);

在结果中返回1项:" site"。

我希望有2个项目:4001,"网站"

任何人都对这里发生的事情有任何想法?

谢谢!

Lists

2 个答案:

答案 0 :(得分:2)

Enumerable.Except不是"对称差异" (见http://en.wikipedia.org/wiki/Set_theory),它是"设置差异":

  

第一组的成员未出现在第二组中。

因此,如果您首先列出的是{4002},则{ 4001}的第二个Except结果将不包含4001

您可能正在寻找:Get the symmetric difference from generic lists

答案 1 :(得分:2)

正如阿列克谢·列文科夫所说,Enumerable.Except不是“对称差异”。

考虑:

new HashSet<string>(expList).SymmetricExceptWith(actList);