分组并在DataTable行中查找MAx值

时间:2013-02-08 18:55:06

标签: c# ado.net datatable

我现有的代码非常有效,它可以在数据表中找到数据列的最大值。现在我想改进它并找到每个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];
           }
        }

2 个答案:

答案 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吗?