以下所有是通用列表
我有listA
我有4个其他列表(list1,list2,list3和list4)
如何退回ListA中存在的项目,但不存在于其他4个列表中? 即如果它存在于list1或list2或list3或list4中,我不想退回它。
答案 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
覆盖GetHashCode
和object
来比较您的属性。