在C#中尝试执行除两个字符串列表之外的操作。有一些差异,请参见下图。在idx 2和19注意这些不一样。但List.Except方法只返回最后一个差异。
我称之为:var x = expList.Except(actList);
在结果中返回1项:" site"。
我希望有2个项目:4001,"网站"
任何人都对这里发生的事情有任何想法?
谢谢!
答案 0 :(得分:2)
Enumerable.Except不是"对称差异" (见http://en.wikipedia.org/wiki/Set_theory),它是"设置差异":
第一组的成员未出现在第二组中。
因此,如果您首先列出的是{4002}
,则{ 4001}
的第二个Except
结果将不包含4001
。
答案 1 :(得分:2)
正如阿列克谢·列文科夫所说,Enumerable.Except
不是“对称差异”。
考虑:
new HashSet<string>(expList).SymmetricExceptWith(actList);