为了账号安全,请及时绑定邮箱和手机立即绑定

如何设计嵌套查询以使用实体框架从 MS SQL 表中获取数据?

如何设计嵌套查询以使用实体框架从 MS SQL 表中获取数据?

PHP
慕哥9229398 2024-01-20 16:01:14
我有三个表,您可以在下图中看到:我的问题是,我想返回所有问题、其响应以及已看到状态的计数,即尚未看到的响应。我正在使用实体框架。我使用了以下查询:querySelection = (from problems in db.Problems               join response in db.Response on problems.Id equals response.QueryId                             join order in db.Msg_Orders on response.Id equals order.Response_Id                                           join seen_status in db.Seen_Status on order.Order_Id equals seen_status.OrderId              select new QuerySelect{                 Problem_State = problems.Problem_State,                 Response = response.Response,                 ResponseCount = /*What code should I write here*/               }).ToList();我的上述查询有两个问题:期望:它应该只返回独特的问题和看不见的响应计数得到什么结果:由于 Msg_Orders 有多个问题 ID,并且上述查询多次返回相同的结果不明白如何在上述查询中添加未见状态的计数。
查看完整描述

1 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

为了实现目标,需要在实体框架语法中使用GROUP BY子句。INNER JOIN

我写了以下解决方案来解决上述问题:

querySelection = (from problems in db.Problems

              join response in db.Response on problems.id equals response.Query_Id

              join order in db.Msg_Orders on query.id equals order.query_id

              join seen_status in db.Seen_Status on order.Order_id equals seen_status.Order_id

              group new { problems, response, order ,seen_status }

                by new

                {

                    problems.Id,

                    problems.Problem_State,

                    problems.Created_Date,

                    response.Response,

                    seen_status.User_Seen_Status

                } into grp

              orderby grp.Key.Id descending

              select new QuerySelection

              {

                  Id = grp.Key.Id,

                  Problem_State = grp.Key.Problem_State,

                  Created_Date = grp.Key.Created_Date,

                  Response = grp.Key.Response,

                  TotalResp = grp.Count(x => x.seen_status.user_seen == 0) // Counting total number of responses

              }

              ).ToList();


查看完整回答
反对 回复 2024-01-20
  • 1 回答
  • 0 关注
  • 31 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信