我现有的代码非常有效,它可以在数据表中找到数据列的最大值。现在我想改进它并找到每个empid的最大值。 需要改变什么?我不想使用LINQ。
我现在正在使用它:memberSelectedTiers.Select(“Insert_Date = MAX(Insert_Date)”) 我需要通过Empid对它进行分组。
我的代码如下。
DataTable memberApprovedTiers = GetSupplierAssignedTiersAsTable(this.Customer_ID, this.Contract_ID);
//get row with maximum Insert_Date in memberSelectedTiers
DataRow msRow = null;
if (memberSelectedTiers != null && memberSelectedTiers.Rows != null && memberSelectedTiers.Rows.Count > 0)
{
DataRow[] msRows = memberSelectedTiers.Select("Insert_Date = MAX(Insert_Date)");
if (msRows != null && msRows.Length > 0)
{
msRow = msRows[0];
}
}
答案 0 :(得分:1)
您可以使用LINQ来实现此目的。我认为以下内容将起作用(没有VS进行测试):
var grouped = memberSelectedTiers.AsEnumerable()
.GroupBy(r => r.Field<int>("EmpId"))
.Select(grp =>
new {
EmpId = grp.Key
, MaxDate = grp.Max(e => e.Field<DateTime>("Insert_Date"))
});
答案 1 :(得分:0)
Daniel Kelley,你的回答对我很有帮助,但是你注意到OP说他不想使用LINQ吗?