2009-04-25 44 views
5

如何在可查询和不可查询数据之间使用LINQ?LINQ加入以查找不在列表中的项目

用下面的代码我想最终得到一个未被选中的用户列表,即所有用户中没有被选中的每个用户。

public IQueryable<CompanyUser> FindAllUsersNotAssignedTothisCompany(int companyID) 
{ 
    var allUsers = Membership.GetAllUsers(); 
    var selected = db.CompanyUsers.Where(c => c.CompanyID == companyID); 
    ...? 
} 

我想有效地在DropDownList中的用户ID和姓名适合列表(ASP.NET MVC)

回答

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();