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;

有办法做到这一点吗?

谢谢

NOT IN for LINQ?

你可以这样做!包含,比如:

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;