在一个列表中查找不存在于其他列表中的项目

时间:2016-03-15 20:33:39

标签: c# list

以下所有是通用列表
我有listA 我有4个其他列表(list1,list2,list3和list4)

如何退回ListA中存在的项目,但不存在于其他4个列表中? 即如果它存在于list1或list2或list3或list4中,我不想退回它。

2 个答案:

答案 0 :(得分:1)

如上所述,这基本上是一组差异。扭曲是减去的集合由几个集合组成。您需要删除它们的并集,或者一次删除它们。 如果您不关心性能,但只考虑实现的简单性,请使用Linq:

var result = ListA
    .Except(list1)
    .Except(list2)
    .Except(list3)
    .Except(list4);

答案 1 :(得分:-1)

使用Linq Any

这样的事情
var result = ListA.Where(x => !(
        list1.Any(y => x.MyProp == y.MyProp) || 
        list2.Any(y => x.MyProp == y.MyProp) || 
        list3.Any(y => x.MyProp == y.MyProp) || 
        list4.Any(y => x.MyProp == y.MyProp)));

另外,您也可以从Equals覆盖GetHashCodeobject来比较您的属性。