0

我现有的代码运行良好,它在数据表中找到数据列的最大值。现在我想改进它并找到每个 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];
           }
        }
4

2 回答 2

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"))
                                     });
于 2013-02-08T19:09:23.450 回答
0

Daniel Kelley,您的回答对我有帮助,这很好,但是您是否注意到 OP 表示他不想使用 LINQ?

于 2018-02-22T20:43:00.697 回答