如何选择不相交的元素?

时间:2013-06-09 09:00:26

标签: c# linq list where-in

如果我有两个列表并且我想要两个列表中常见的元素,我可以使用此代码:

var listC = listA.Intersect(listB);

但是,如果我想要不常见的元素?没有重复?有交叉吗?

感谢。

3 个答案:

答案 0 :(得分:3)

到目前为止,这两个答案都不包含listB中不在listA内的项目。要获取 列表中的任何项目,但不在两个列表中

listA.Union(listB).Except(listA.Intersect(listB));

答案 1 :(得分:1)

是的,那是可能的。它被称为Enumerable.Except

使用此:

var result = listA.Except(listB); //maybe a .ToList() at the end,
//or passing an IEqualityComparer<T> if you want a different equality comparison.

答案 2 :(得分:1)

效率最高:

var set = new HashSet<T>(listA);
set.SymmetricExceptWith(listB);