C# Linq:group by+;计数一列

C# Linq:group by+;计数一列,c#,sql,linq,C#,Sql,Linq,我在SQL中有这个查询 select FileName, UploadDate, Status from MyTable group by FileName, UploadDate, Status 这给了我正确的输出 FileName UploadDate Status fuel 1.xls 2020-04-10 17:43:04.857 1 fuel 1.xls 2020-04-10 17:43:04.857 4 fuel 2.xls

我在SQL中有这个查询

     select FileName, UploadDate, Status 
     from MyTable group by FileName, UploadDate, Status
这给了我正确的输出

FileName    UploadDate              Status
fuel 1.xls  2020-04-10 17:43:04.857 1
fuel 1.xls  2020-04-10 17:43:04.857 4
fuel 2.xls  2020-04-10 17:43:17.193 4
FileName    UploadDate             Status   StatusCount
fuel 1.xls  2020-04-10 17:43:04.857 1       19
fuel 1.xls  2020-04-10 17:43:04.857 4       1
fuel 2.xls  2020-04-10 17:43:17.193 4       20
我可以将此查询转换为LINQ

context.MyTable
                .GroupBy(x => new { x.FileName, x.UploadDate, x.Status })
                .Select(x => new { x.Key.FileName, x.Key.UploadDate, x.Key.Status });
现在我想要相同的查询,但是需要一个额外的列,其中包含“Status”列的计数

我通过这个查询在SQL中实现了这一点

select FileName, UploadDate, Status, count(Status) as 'StatusCount' 
from MyTable group by FileName, UploadDate, Status
这给了我正确的输出

FileName    UploadDate              Status
fuel 1.xls  2020-04-10 17:43:04.857 1
fuel 1.xls  2020-04-10 17:43:04.857 4
fuel 2.xls  2020-04-10 17:43:17.193 4
FileName    UploadDate             Status   StatusCount
fuel 1.xls  2020-04-10 17:43:04.857 1       19
fuel 1.xls  2020-04-10 17:43:04.857 4       1
fuel 2.xls  2020-04-10 17:43:17.193 4       20

如何将这个额外的“列计数”转换为LINQ?我已经尝试了好几次不同的解决方案,但都没有成功。有人能帮我吗?

如果你真的是指伯爵:

context.MyTable
   .GroupBy(x => new { x.FileName, x.UploadDate, x.Status })
   .Select(x => new { x.Key.FileName, x.Key.UploadDate, x.Key.Status,
                      Count = x.Count() });
如果你实际上是指总和:

context.MyTable
   .GroupBy(x => new { x.FileName, x.UploadDate, x.Status })
   .Select(x => new { x.Key.FileName, x.Key.UploadDate, x.Key.Status,
                      Sum = x.Sum(e => e.Status) });

您只需在
Select
方法中的每个
i分组
对象上调用
Count
方法:

context.MyTable
            .GroupBy(x => new { x.FileName, x.UploadDate, x.Status })
            .Select(x => new 
                           { 
                             FileName = x.Key.FileName, 
                             UploadDate = x.Key.UploadDate, 
                             Status = x.Key.Status,
                             Count = x.Count()
                    });
count(status)
也可以是
count(*)
<代码>状态与组中的任何其他字段相比,此处的计数没有更多意义。