具有多个联接的LinQ、具有where子句的左联接和group by
大家好,在谷歌搜索了几个小时后,仍然坚持我的linq声明 我有三张桌子:具有多个联接的LinQ、具有where子句的左联接和group by,linq,group-by,left-join,where-clause,Linq,Group By,Left Join,Where Clause,大家好,在谷歌搜索了几个小时后,仍然坚持我的linq声明 我有三张桌子: - tblRequest : RequestID, RequestDate, UserID - tblUser: UserID, Username - tbMessage: MessageID, RequestID, IsRead tbMessage中的RequestID是tblRequest中RequestID的外键 我的场景是,我需要获取特定用户上tblRequest的所有请求,以及未读消息的计数 所选字段应为tbl
- 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)
提前谢谢
关于我想我有一个解决方案给你。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()
使用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的局部变量