使用LINQ Join查找不在列表中的项

5
我如何在Queryable和非Queryable数据之间使用LINQ?
以下代码可以帮助我获得未选择用户列表,即allUsers中除了在selected中的所有用户。
public IQueryable<CompanyUser> FindAllUsersNotAssignedTothisCompany(int companyID)
{
    var allUsers = Membership.GetAllUsers();
    var selected = db.CompanyUsers.Where(c => c.CompanyID == companyID);
    ...?
}

我需要一个适用于DropDownList(ASP.NET MVC)的用户ID和名称列表。
2个回答

18
假设 allUsersselected 是相同类型的,您可以使用 Except 来实现此目的。
public IQueryable<CompanyUser> FindAllUsersNotAssignedTothisCompany(int companyID)
{
    var allUsers = Membership.GetAllUsers();
    var selected = db.CompanyUsers.Where(c => c.CompanyID == companyID);
    return allUsers.Except(selected);
}

然而,如果 db.CompanyUsers 已经拥有所有用户,并且您需要检索没有与特定 companyID 相关联的用户,只需执行以下操作:

return db.CompanyUsers.Where(c => c.CompanyID != companyID);

0

尝试在一行中执行此操作:

db.CompanyUsers.Where(c => !allUsers.Any(d=> d.CompanyID == a.companyID))).ToList();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接