c# - 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 2020-04-10 17:43:17.193 4
我可以将此查询转换为 LINQ
context.MyTable
.GroupBy(x => new { x.FileName, x.UploadDate, x.Status })
.Select(x => new { x.Key.FileName, x.Key.UploadDate, x.Key.Status });
现在我想要相同的查询,但有一个额外的列,其中包含“状态”列的计数
我用这个查询在 SQL 中完成这个
select FileName, UploadDate, Status, count(Status) as 'StatusCount'
from MyTable group by FileName, UploadDate, Status
这给了我正确的输出
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) });
推荐阅读
- c - 为什么 printf("%.3f\n", 123456.987654) 打印 123456.984?
- javascript - 如何从单独的文件中导入 jquery 脚本
- java - 将2个参数传递给java增强的for循环
- java - 如何在 Java 中为 Peg-Solitaire 中的游戏板编写“获取字段”功能
- flutter - 当我更改应用程序的语言时,我只想在 Flutter 中将剪贴板文本(复制、粘贴等)更改为英文?
- linux - 查找数组元素频率的shell脚本
- javascript - OpenLayers:从服务器获取 Map、View、TileLayer 和 OSM
- google-analytics - 我在我的谷歌分析漏斗中看不到我创建的 UTM
- flutter - 我可以更改颤振 Web 应用程序中的右键单击操作吗?
- javascript - 在 React 中需要本地图像