我有两个对象列表。
List<object1> obj1 = new List<object1>();
List<object2> obj2 = new List<object2>();
我想这样做:
obj2 = obj2.Except(obj1).ToList();
但是,通过阅读与我类似的其他问题,我知道除非我重写等于,否则这不起作用。
我不想这样做,但是obj2和obj1都有一个字符串属性,足以看出它们是否相等。如果obj2.StringProperty
等同于obj1.StringProperty
,则可以认为这两者相等。
我有什么方法可以使用Except,但只使用string属性进行比较?
答案 0 :(得分:33)
Except
方法要求所涉及的两种集合类型具有相同的元素类型。在这种情况下,元素类型不同(object1
和object2
)因此Except
实际上不是一个选项。这里使用的更好方法是Where
obj2 = obj2
.Where(x => !obj1.Any(y => y.StringProperty == x.StringProperty))
.ToList();