2014-04-02 113 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(); 

应该会转换成单一的数据库调用。