linq - Linq分组和最大值
问题描述
我是Linq的新手。以下工作,但我也可以在单个查询中获得类别的 WorkOrderVersion(int) 的最大值吗?好像我应该可以,但不知道怎么做?
var results = from p in ExcelEstimateDataTable.AsEnumerable()
group p by p.Field<string>("Category") into g
orderby g.Key ascending
select new
{
Category = g.Key,
Properties = g
};
foreach (var item in results)
{
Console.WriteLine($"Category: {item.Category}");
foreach (DataRow dr in item.Properties)
{
Console.WriteLine($"myLinqOutput: {dr["WorkOrderVersion"]}, {dr["Category"]}, {dr["SubCategory"]}");
}
}
解决方案
是的,你可以。
var results = from p in ExcelEstimateDataTable.AsEnumerable()
group p by p.Field<string>("Category") into g
orderby g.Key ascending
select new
{
Category = g.Key,
Properties = g,
MaxWorkOrderVersion = g.Max( x => x.Field<int>("WorkOrderVersion") )
};
注意:由于您是 Linq 的新手,因此您可以像这样在 DataTable(Linq To DataSet)上使用 Linq。但是,稍后您会发现这是更难的一个。Linq To Objects、Linq To SQL、Linq to EF ......所有这些都比使用数据表更容易。
那里的 AsEnumerable() 是有问题的,但由于这是一个 DataTable,所以没什么大不了的。
推荐阅读
- python - Python 超过 30 次重定向
- c++ - 随机播放 10% 的数组
- robots.txt - 将 Robots.txt 放入 Blazor Web Assembly 项目的最佳位置在哪里?
- c++ - CMake构建库和可执行文件一次并链接它
- c - 在 C 函数中将结构作为参数传递
- html - 为什么 React 的默认边距与普通 html 不同?
- javascript - 使用 Cypress 对我的 React 应用程序中使用的简单 javascript 函数进行单元测试
- ios - 如何获得超宽相机的内在矩阵?
- python - 在 Windows 10 上使用日志记录和设置语言环境时 Python 崩溃
- python - 如何在pygame中移动多个对象而不影响其他对象的运动(无延迟)