NOT IN for LINQ?
本文关键字:LINQ for IN NOT | 更新日期: 2023-09-27 18:02:14
是否有一种方法可以让我按组过滤员工:例:
List<String> notInGroups = GetNotInGroups();
var list = from p in employees
where p.Group.Name notin(notInGroups)
select p;
有办法做到这一点吗?
谢谢
你可以这样做!包含,比如:
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;
尝试将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;
你可以这样做…
List<String> notInGroups = GetNotInGroups();
var list = from p in employees
where !(notInGroups.Contains(p.Group.Name))
select p;