データテーブルの列の集計方法について

Excelファイルを範囲で読取し品名、数量、希望納期をデータテーブルに格納します。
このデータテーブルを品名、希望納期でフィルタをかけ、品名、希望納期ごとの数量を集計し、下記図の右側の表のようなデータテーブルを作成したいです。

現在の手順は、下記を想定しています。
1.データテーブルを品名でフィルタをし、データテーブル2に出力
2.データテーブル2を繰り返し、希望納期を取得
3.2で取得した希望納期でデータテーブル2をフィルタし、データテーブル3に出力
4.データテーブル3を繰り返し、数量を代入し加算
5.品名、希望納期、加算した数量をデータテーブル4に追加

この場合、手順が多くもっと効率よく実現できないか検討しており、フォーラムのトピックも参考にComputeを使ってみるなどしてみましたが、エラーが発生し上手くいきません。
何かいい方法はありますでしょうか?

LINQのGroupByをお試しください。以下サンプルです

dt.AsEnumerable.GroupBy(Function(r) Tuple.Create(r("品名").ToString,r("希望納期").ToString)).Select(Function(g) dt.Clone.LoadDataRow({g.Key.Item1,g.Sum(Function(r) CInt(r("数量"))),g.Key.Item2},False)).CopyToDataTable

Sample20231109-3L.zip (9.0 KB)

早速の回答ありがとうございます。
提案された方法を試してみたところ、希望通りの結果を得ることができ、無駄な変数や処理を作らずに済みました。

1 Like

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.