3

私は 2 つを持っIList<CustomObject>CustomObjectNameますstringset最初のものと 2 番目のものを呼び出しsubsetます。set複数選択リストボックスでユーザーに表示したばかりのもののリストが含まれています。ユーザーが選択したものは配置されていますsubset(したがってsubset、 のサブセットであることが保証されているsetため、巧妙な名前が付けられています ;) )

これら 2 つのセットから、ユーザーが選択しなかったすべての CustomObjects を含む3 番目IList<CustomObject>のを生成する最も簡単な方法は何ですか?inverseSubset

私はこのような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を使用します。

2つのシーケンスのセット差を生成します。

于 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 に答える