首页 > 解决方案 > 如何合并一张表中的两个计数查询?

问题描述

第一个查询:

Id | UserId   |  projectId   |date   | Status
1  | 1        |  1           | 2020  | PENDDING
2  | 1        |  2           | 2020  | DONE
3  | 2        |  1           | 2020  | PENDDING

我尝试了两个查询:第一个是关于 X 项目的所有用户工作,例如 id = 1

var FirstQery = context.table1.where (C => C.ProjectId == 1).count();

第二个查询是获取项目 x 具有“完成”状态的用户数

var SecondQery = context.table1.where (C => C.ProjectId == 1 && C.Status == "DONE").count();

我希望返回对象只有两个值:countNumberUserWithXProject 和 countNumberUserByXProjectHaveXStatus

标签: c#linqjoin

解决方案


这是已知的假分组方法。

var query = 
   from t in context.table1
   where t.ProjectId == 1
   group t by 1 into g
   select new 
   {
      Count = g.Count(),
      DoneCount = g.Sum(x => x.Status == "DONE" ? 1 : 0)
   }

var result = query.FirstOrDefault();

推荐阅读