従業員をグループ別にフィルタリングする方法はありますか:例:
List<String> notInGroups = GetNotInGroups();
var list = from p in employees
where p.Group.Name notin(notInGroups)
select p;
このようなことをする方法はありますか?
ありがとう
次のように !Contains を実行できます。
var list = from p in employees
where !notInGroups.Contains(p.Group.Name)
select p;
テストできませんが、このようなものは動作しませんか?
var notInGroups = GetNotInGroups();
var list = from p in employees
where notInGroups.Contains(p.Group.Name) == false
select p;
あなたはこのようなことをすることができます..
List<String> notInGroups = GetNotInGroups();
var list = from p in employees
where !(notInGroups.Contains(p.Group.Name))
select p;
where !notInGroups.Contains(p.Group.Name);
あなたのWHERE
句として試してみてください。
List
コレクションを検索して特定のアイテムが含まれているかどうかを確認するタスクには特に適していません。これはまさにあなたがやりたいことです。コードを書くのはとても簡単ですが (方法を示す多くの回答がすでにあります)、より効率的に検索できるより適切なデータ構造を使用すると、次のような顕著なメリットが得られますHashSet
。
var notInGroups = new HashSet<string>(GetNotInGroups());
var list = from p in employees
where !notInGroups.Contains(p.Group.Name)
select p;