确定列表中的哪些元素不在另一个列表中
本文关键字:列表 另一个 元素 | 更新日期: 2023-09-27 18:36:33
我有两个IList<CustomObject>
,其中CustomObject
有一个Name
属性,这是一个string
。称第一个set
,第二个subset
。 set
包含我刚刚在多选列表框中向用户显示的内容列表。用户选择的那些已被放置在subset
中(因此subset
保证是set
的子集,因此聪明的名称;))
从这两个集合中生成第三个IList<CustomObject>
inverseSubset
,包含用户未选择的所有自定义对象的最直接方法是什么?
我一直在尝试这样的事情 LINQ
IEnumerable<CustomObject> inverseSubset = set.Select<CustomObject,CustomObject>(
sp => !subset.ConvertAll<string>(p => p.Name).Contains(sp.Name));
。基于对模糊相似问题的答案,但到目前为止,甚至没有编译,更不用说工作:P
为此使用 LINQ Except
:
产生两个序列的集合差。
啊哈,最近SQL太多了-我不想Select
,我想要Where
:
List<string> subsetNames = subset.ConvertAll<string>(p => p.Name);
IEnumerable<CustomObject> inverseSubset =
set.Where<CustomObject>(p => !subsetNames.Contains(p.Name));