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

时间:2012-06-06 19:58:12

标签: c# ilist

我有两个IList<CustomObject>,其中CustomObject的{​​{1}}属性为Name。拨打第一个string,第二个setsubset包含我刚刚在多选列表框中向用户显示的内容列表。用户选择的那些已被放置在set中(因此subset保证是subset的子集,因此聪明的名称;))

从这两个集合生成第三个setIList<CustomObject>,包含用户DID未选择的所有自定义对象的最简单方法是什么?

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

inverseSubset

......基于模糊相似问题的答案,但到目前为止,没有任何内容可编译,更不用说工作了:P

2 个答案:

答案 0 :(得分:7)

使用LINQ Except

  

产生两个序列的集合差异。

答案 1 :(得分:-1)

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

List<string> subsetNames = subset.ConvertAll<string>(p => p.Name);
IEnumerable<CustomObject> inverseSubset =
    set.Where<CustomObject>(p => !subsetNames.Contains(p.Name));