Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有多个联接的LinQ、具有where子句的左联接和group by_Linq_Group By_Left Join_Where Clause - Fatal编程技术网

具有多个联接的LinQ、具有where子句的左联接和group by

具有多个联接的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

大家好,在谷歌搜索了几个小时后,仍然坚持我的linq声明

我有三张桌子:

- 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的局部变量