2009-04-25 10 views
5

¿Cómo uso LINQ en los datos consultables y no consultables?LINQ Unirse para buscar elementos NO EN una lista

Con el siguiente código deseo terminar con una lista de usuarios no seleccionados, es decir, todos en todos los usuarios que no están seleccionados.

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

Quiero efectivamente una lista de ID de Nombres y adecuado para su uso en un DropDownList (ASP.NET MVC)

Respuesta

18

Suponiendo que tanto allUsers y selected son del mismo tipo, puede hacerlo utilizando Except

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

sin embargo, si db.CompanyUsers ya cuenta con todos los usuarios y todo lo que necesita es recuperar los usuarios que no tienen la CompanyID en la búsqueda ión simplemente:

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

Prueba esto en una sola línea:

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