实体框架分组数据

时间:2019-01-17 09:41:15

标签: c# sql entity-framework lambda

在我的数据库上,我可以运行以下命令:

SELECT Distinct ApprovalStatus,  Id,  COUNT (ApprovalStatus) total
from dbo.DummyTable
WHERE Id!= 0
group by ApprovalStatus, Id

并将生成以下内容:

ApprovalStatus | Id | Count
---------------|----|-------
Approved       | 47 | 1423
Pending        | 47 | 4
Approved       | 46 | 1685
Pending        | 46 | 47

我想要在我的项目中也一样。最初,我是通过简单的Entity Framework逻辑从数据库中返回所有内容。

现在我有了数据,我试图通过尝试将SQL代码转换为Lambda表达式来拆分数据。这就是我所拥有的:

var count = data.GroupBy(d => d.Id)
            .Select(x => new
            {
               ID = x.Select(x=>x.Id.ToString()),
               Count = x.Select(x => x.ApprovalStatus == "Pending").Count()
            }); 

我正在苦苦挣扎的是让我的代码以与在SQL中类似的方式输出数据。有时我想在网页上显示数据。

1 个答案:

答案 0 :(得分:4)

您可以这样做

var results = data.GroupBy(x => new { x.ApprovalStatus, x.Id })
                  .Select(x => new
                         {
                            ApprovalStatus = x.Key.ApprovalStatus,
                            Id = x.Key.Id,
                            Count = x.Count()
                         });