C# 确定列表中的哪些元素不在另一个列表中

C# 确定列表中的哪些元素不在另一个列表中,c#,ilist,C#,Ilist,我有两个IList,其中CustomObject有一个Name属性,它是一个字符串。调用第一个集合,调用第二个子集集合包含我刚刚在多选列表框中向用户显示的内容列表。用户选择的那些已放置在子集(因此子集保证是集合的子集,因此是聪明的名称;) 从这两个集合中生成第三个IList,inverseSubset,包含用户未选择的所有CustomObject的最直接的方法是什么 我一直在尝试像这样的事情 IEnumerable<CustomObject> inverseSubset = set.

我有两个
IList
,其中
CustomObject
有一个
Name
属性,它是一个
字符串。调用第一个
集合
,调用第二个
子集
<代码>集合
包含我刚刚在多选列表框中向用户显示的内容列表。用户选择的那些已放置在
子集
(因此
子集
保证是
集合
的子集,因此是聪明的名称;)

从这两个集合中生成第三个
IList
inverseSubset
,包含用户未选择的所有CustomObject的最直接的方法是什么

我一直在尝试像这样的事情

IEnumerable<CustomObject> inverseSubset = set.Select<CustomObject,CustomObject>(
    sp => !subset.ConvertAll<string>(p => p.Name).Contains(sp.Name));
IEnumerable inverseSubset=set。选择(
sp=>!subset.ConvertAll(p=>p.Name).Contains(sp.Name));
…基于对模糊相似问题的回答,但到目前为止,还没有编写任何内容,更不用说工作了:p

使用LINQ实现以下目的:

生成两个序列的集差


啊哈,最近SQL太多了-我不想要
Select
,我想要
Where

List<string> subsetNames = subset.ConvertAll<string>(p => p.Name);
IEnumerable<CustomObject> inverseSubset =
    set.Where<CustomObject>(p => !subsetNames.Contains(p.Name));
List subsetNames=subset.ConvertAll(p=>p.Name);
可数逆子集=
其中(p=>!subsetNames.Contains(p.Name));

如果说他需要实现
IEquatable
通用接口,并为
CustomObject
提供自己的
GetHashCode
Equals
方法,那会很有帮助。实际上,因为这两个集合都包含对相同对象的引用,我没有
IEnumerable inverseSubset=set.Except(子集)
运行得很好。好吧,除了,它没有
那么流畅,但是为什么要投反对票呢?如果我真的只需要过滤Name属性,我认为除了它之外就没有什么用了,是吗?