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 に答える