【发布时间】:2018-05-18 22:39:47
【问题描述】:
我有一个包含 4 个字段的数据表。
ptime, Substation, ColumnTitle, ValueAmount
我想要具有最大 ValueAmount 的行,按 Substation 和 ColumnTitle 分组。所以假设这是我的数据表
ptime, Substation, ColumnTitle, ValueAmount
--------------------------------------------
'01:00' 'AA' 'A' 100
'03:00' 'AA' 'A' 150
'01:00' 'BB' 'A' 10
'02:00' 'BB' 'A' 11
'01:00' 'AA' 'C' 77
'02:00' 'AA' 'C' 88
'04:00' 'AA' 'C' 99
所以我想拥有
ptime, Substation, ColumnTitle, ValueAmount
--------------------------------------------
'03:00' 'AA' 'A' 150
'02:00' 'BB' 'A' 11
'04:00' 'AA' 'C' 99
为此目的最好的 linq 命令是什么? 我已经编程了:
var newSort = from row in dtFinal.AsEnumerable()
group row by new {Substation = row.Field<string>("Substation"),
ColumnTitle= row.Field<string>("ColumnTitle")} into grp
select new
{
Substation = grp.Key.Substation,
ColumnTitle = grp.Key.ColumnTitle,
ValueAmount = grp.Max(r => decimal.Parse(r.Field<string>("ValueAmount")))
};
但在这种语法中,我没有 ptime 。我该怎么做。
谢谢
【问题讨论】:
-
顺便说一句,它是
Column而不是Coulmn... -
执行此操作并不完全简单——首先,如果存在具有相同(最大值)值但 ptime 值不同的行,应该返回哪一个?您必须进行二次查找或加入才能找到所需的 ptime。
-
@DylanNicholson:所以没有办法只用一次查找就可以了,是吗?
标签: c# visual-studio visual-studio-2010