伙计们,我是实体框架的新手,我遇到了一个问题,我已经尝试解决很长一段时间了。基本上我有 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<Book> GetGroupBooks(string username)
{
UserRepository userRepository = new UserRepository();
int groupId = userRepository.GetUserGroupId(username);
IQueryable<Book> 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;
}
显然这是一个临时措施,只返回一本书,但我将其包含在内以供参考。任何帮助或建议在这里将不胜感激。
Thanks
我个人认为有一个更好的解决方案(当然未经测试):
首先通过GroupdID从ReadList中选择,然后在BookID上加入书籍。
IQueryable<Book> 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()
如果您有任何问题,请告诉我。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)