我有两个originalSet
类型的列表List<TypeA>
和excludibleSet
类型的List<TypeB>
。
我需要一个类型为newSet
的新列表List<TypeA>
,其中只包含与originalSet
中的元素无关的excludibleSet
元素。
这两种类型完全不同(只有少数共同属性),因此我不能将Except
与EqualityComparer
一起使用,但我必须手动使用。
更深入:假设我在prop1
和prop2
之间的公共空间中拥有属性TypeA
和TypeB
。
我想从originalSet
中排除prop1
和prop2
等于prop1
中prop2
和excludibleSet
元素的所有元素。
如何使用Linq或以优雅的方式执行此操作?
答案 0 :(得分:6)
您可以尝试这样的事情:
var newSet = originalSet.Where(x=>!excludibleSet.Any(y=>y.prop1==x.prop1 &&
y.prop2==x.prop2)
).ToList();