我是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"]}");
}
}
答案 0 :(得分:1)
可以。
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()值得怀疑,但是由于这是一个数据表,所以没什么大不了的。