3

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

4

2 回答 2

7

Except为此使用 LINQ :

产生两个序列的集合差。

于 2012-06-06T19:59:58.680 回答
-1

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

List<string> subsetNames = subset.ConvertAll<string>(p => p.Name);
IEnumerable<CustomObject> inverseSubset =
    set.Where<CustomObject>(p => !subsetNames.Contains(p.Name));
于 2012-06-06T20:00:26.460 回答