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

本文关键字:列表 另一个 元素 | 更新日期: 2023-09-27 18:36:33

我有两个IList<CustomObject>,其中CustomObject有一个Name属性,这是一个string。称第一个set,第二个subsetset包含我刚刚在多选列表框中向用户显示的内容列表。用户选择的那些已被放置在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));