2009-08-07 5 views
1

Ich benutze linq zu entities und ich möchte alle Benutzer, die nicht für die Klasse angemeldet haben. Das habe ich getan..net linq to entities "nicht in" single query

var classUsers = from cu in myEntities.ClassUsers 
         where cu.Class.ClassId == classId 
         select new 
         { 
          FirstName = cu.UserInfo.FirstName, 
          Id = cu.UserInfo.Id, 
          LastName = cu.UserInfo.LastName, 
          Select = new Boolean() 
         }; 

     var allUsers = from u in myEntities.UserInfo 
         select new 
         { 
          FirstName = u.FirstName, 
          Id = u.Id, 
          LastName = u.LastName, 
          Select = new Boolean() 
         }; 

     var availableUsers = allUsers.Except(classUsers).OrderBy(a=>a.FirstName); 

Gibt es eine Möglichkeit, die ersten beiden Abfragen zu einer zusammenführen?

Antwort

0

Ich habe es nicht getestet, aber das könnte eine leichte Lösung sein.

myEntities.UserInfo.Except(myEntities.ClassUsers.Where(cu=> cu.Class.ClassID = classID) 
.Select(cu=>cu.UserInfo)).Select(u=>Id = u.Id, FirstName = u.FirstName, LastName = 
           u.LastName, Select = new Boolean()) 
+0

Danke für den Zeiger. Ich musste es ein wenig zwicken, damit es funktioniert. var availableUsers = myEntities.UserInfo.Except (myEntities.ClassUsers.Where (cu => cu.Class.ClassId == classId) .Wählen Sie (cu => cu.UserInfo)) .Wählen Sie (u => new {Id = u .Id, FirstName = u.FirstName, LastName = u.LastName, Auswahl = new Boolean()}). OrderBy (u => u.FirstName); – krishna

Verwandte Themen