大家好,经过几个小时的谷歌搜索,仍然坚持我的linq声明。
我有3张桌子:
- tblRequest : RequestID, RequestDate, UserID
- tblUser: UserID, Username
- tbMessage: MessageID, RequestID, IsRead
tbMessage中的RequestID是tblRequest中的RequestID的外键
我的情况是,我需要从tblRequest获取针对特定用户的所有请求,以及未读消息的数量。
所选字段应为tblRequest.RequestID,tblRequest.RequsetDate,tblUser.Username,COUNTOfUnreadMessage(Isread == false)
提前致谢!
问候
答案 0 :(得分:1)
我想我有一个解决方案。 db是linq数据库上下文。希望这有帮助
var userId=1;
(
from req in db.tblRequest
join user in db.tblUser
on req.UserID equals user.UserID
where
req.UserID==userId
select new
{
req.RequestID,
req.RequestDate,
user.Username,
COUNTOfUnreadMessage= db.tbMessage.Where(a=>a.RequestID==req.RequestID && a.IsRead==false).Count()
}
).ToList()
答案 1 :(得分:1)
使用DBContext关系:
from r in db.Requests
where r.UserID == _userID
select new
{
r.RequestId,
r.RequestDate,
r.User.Username,
UnreadMessagesCount = r.Messages.Where(m=>!m.IsRead).Count()
}
其中_userID是具有所需用户ID的本地变量。