2014-04-02 82 views
0

從我的用戶場景在這裏繼:entity-framework-updating-with-stub-causes-primary-key-violation在多對多的關係的LINQ to SQL查找項目

使用EF6,我的表結構如下:

​​

我試圖寫一個方法返回用戶是否有任何一組的列表中的一個occurence:

public static bool InUserGroup(string userCode, List<string> userGroupList) 
{ 
    using (var dbContext = new MyEntities()) 
    { 
     var results = dbContext.Users.Where(u => u.UserCodePK == userCode).FirstOrDefault(); 
     return results.UserGroups.Where(ug => userGroupList.Contains(ug.GroupCodePK)).Any();      
    } 
} 

這確實工作,但我不認爲這是非常有效的,因爲它是做2數據庫調用。
我怎麼能重寫這個更有效率,即。一個數據庫調用?

回答

0

你可以嘗試做這樣的:

return dbContext.Users.Where(u => u.UserCodePK == userCode 
    && u.UserGroups.Where(ug => userGroupList.Contains(ug.GroupCodePK)).Any(); 

應該會轉換成單一的數據庫調用。