2009-08-07 62 views
1

Iam使用linq實體,我想獲得所有未註冊該類的用戶。這就是我所做的。.net linq實體「不在」單個查詢

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

有沒有辦法將前兩個查詢合併爲一個?

回答

0

我沒有測試它,但這可能是一個輕量級的解決方案。

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

感謝您的指針。我必須稍微調整一下才能使其工作。 (cu => cu.Class.ClassId == classId).Select(cu => cu.UserInfo))。Select(u => new {Id = u .Id,FirstName = u.FirstName,LastName = u.LastName,Select = new Boolean()})。OrderBy(u => u.FirstName); – krishna 2009-08-07 14:19:14