4

従業員をグループ別にフィルタリングする方法はありますか:例:

List<String> notInGroups = GetNotInGroups();

    var list = from p in employees 
    where p.Group.Name notin(notInGroups)
    select p;

このようなことをする方法はありますか?

ありがとう

4

5 に答える 5

7

次のように !Contains を実行できます。

var list = from p in employees
where !notInGroups.Contains(p.Group.Name)
select p;
于 2013-03-05T14:25:34.373 に答える
2

テストできませんが、このようなものは動作しませんか?

var notInGroups = GetNotInGroups();
var list = from p in employees 
           where notInGroups.Contains(p.Group.Name) == false
           select p;
于 2013-03-05T14:26:53.717 に答える
1

あなたはこのようなことをすることができます..

List<String> notInGroups = GetNotInGroups();

var list = from p in employees 
           where !(notInGroups.Contains(p.Group.Name))
           select p;
于 2013-03-05T14:29:29.500 に答える
1

where !notInGroups.Contains(p.Group.Name);あなたのWHERE句として試してみてください。

于 2013-03-05T14:27:05.957 に答える
1

Listコレクションを検索して特定のアイテムが含まれているかどうかを確認するタスクには特に適していません。これはまさにあなたがやりたいことです。コードを書くのはとても簡単ですが (方法を示す多くの回答がすでにあります)、より効率的に検索できるより適切なデータ構造を使用すると、次のような顕著なメリットが得られますHashSet

var notInGroups = new HashSet<string>(GetNotInGroups());

var list = from p in employees 
    where !notInGroups.Contains(p.Group.Name)
    select p;
于 2013-03-05T14:34:36.303 に答える