除了不同类型的列表

时间:2014-07-02 13:16:38

标签: c# list

我有两个originalSet类型的列表List<TypeA>excludibleSet类型的List<TypeB>。 我需要一个类型为newSet的新列表List<TypeA>,其中只包含与originalSet中的元素无关的excludibleSet元素。

这两种类型完全不同(只有少数共同属性),因此我不能将ExceptEqualityComparer一起使用,但我必须手动使用。

更深入:假设我在prop1prop2之间的公共空间中拥有属性TypeATypeB。 我想从originalSet中排除prop1prop2等于prop1prop2excludibleSet元素的所有元素。

如何使用Linq或以优雅的方式执行此操作?

1 个答案:

答案 0 :(得分:6)

您可以尝试这样的事情:

var newSet = originalSet.Where(x=>!excludibleSet.Any(y=>y.prop1==x.prop1 && 
                                                        y.prop2==x.prop2)
                        ).ToList();