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