entity framework子查询

伙计我是Entity Framework的新手,我遇到了一个问题,我一直试图解决这个问题。 基本上我有4个实体:用户,组,书籍和阅读列表。 用户可以加入组,组可以包含由readingList定义的书籍。 我正在尝试显示特定组的书籍列表,SQL如下所示:

SELECT * FROM Books b WHERE b.Id IN ( SELECT BookID FROM ReadingList rl WHERE rl.GroupID = '3') 

我通过从UserRepository查询当前用户来确定要搜索的GroupID,目前“按组获取书籍”方法如下所示:

 // Get books by group public IQueryable GetGroupBooks(string username) { UserRepository userRepository = new UserRepository(); int groupId = userRepository.GetUserGroupId(username); IQueryable q = from b in entities.Books where b.Id == 7 // temp - these values should be determined by // rl in entites.ReadingList select rl.BookID where r.GroupID == groupID select b; return q; } 

显然这是一个临时措施,只返回一本书,但我已将其作为参考。 任何帮助或建议将非常感谢。

谢谢

我还没有测试过,但希望它会起作用。

 entities.Books.Where( b => entities.ReadingList. Where(rl => rl.GroupId == groupId). Select(rl => rl.BookId). Contains(b.BookId) ) 

就个人而言,我认为有一个更好的解决方案(当然未经测试):

首先从GroupdID中选择ReadList,然后加入BookID上的书籍。

 IQueryable q = from rl in entities.ReadingList join b in entities.Books on rl.BookID equals b.BookID where rl.GroupdID ==groupID select b; var books = q.ToList() 

如果您有任何问题,请告诉我。