我有两个
IList<CustomObject>
,其中 CustomObject
有一个 Name
属性,该属性是一个 string
。将第一个称为 set
,第二个称为 subset
。 set
包含我刚在多选列表框中向用户显示的一些东西。用户选择的已经放入了 subset
(因此保证 subset
是 set
的子集,因此有了聪明的名称 ;))
从这两个集合中生成第三个 IList<CustomObject>
inverseSubset
,其中包含用户没有选择的所有 CustomObjects,最直接的方法是什么?
我一直在尝试使用 LINQ 这样的东西:
IEnumerable<CustomObject> inverseSubset = set.Select<CustomObject,CustomObject>(
sp => !subset.ConvertAll<string>(p => p.Name).Contains(sp.Name));
目前根据类似问题的答案进行尝试,但是到目前为止,甚至没有编译成功,更不用说运行了 :P
IEquatable<T>
泛型接口并为CustomObject
提供自己的GetHashCode
和Equals
方法。 - Tim SchmelterIEnumerable<CustomObject> inverseSubset = set.Except<CustomObject>(subset);
运行得很好。 - Chuck Wilbur