データテーブルの集計

左の表をデータテーブルに入れて、同じ商品IDがあれば商品名を結合、金額を合算、詳細を結合して、右の表のようなデータテーブルを作成したいです。
いい方法がありましたら教えてください。

こんにちは

以下お試しください

dt.AsEnumerable.GroupBy(Function(r) r("商品ID").ToString).Select(Function(g) dt.Clone.LoadDataRow({g.Key,String.Join(",",g.Select(Function(r) r("商品名").ToString())),g.Sum(Function(r) CDbl(r("金額"))),String.Join(",",g.Select(Function(r) r("詳細").ToString()))},False)).CopyToDataTable()

Sample
Sample20240329-1.zip (8.7 KB)

ご回答ありがとうございます!
できました!
ちなみに表の一番左に「年度」と「月」の列がある場合(RPAは毎月月末に実行)は、以下コードはどうなりますでしょうか?

dt.AsEnumerable.GroupBy(Function(r) r(“商品ID”).ToString).Select(Function(g) dt.Clone.LoadDataRow({g.Key,String.Join(“,”,g.Select(Function(r) r(“商品名”).ToString())),g.Sum(Function(r) CDbl(r(“金額”))),String.Join(“,”,g.Select(Function(r) r(“詳細”).ToString()))},False)).CopyToDataTable()

これだけでは要件が良くわかりませんので、入力例と、それに対する期待する出力を共有可能でしょうか?

ご回答ありがとうございます。
説明不足で申し訳ありません。
以下にイメージ図を記載いたします。よろしくお願いいたします。

年度、月ともすべて同じであれば以下になります。

dt.AsEnumerable.GroupBy(Function(r) r("商品ID").ToString).Select(Function(g) dt.Clone.LoadDataRow({g.First().Item("年度"),g.First().Item("月"),g.Key,String.Join(",",g.Select(Function(r) r("商品名").ToString())),g.Sum(Function(r) CDbl(r("金額"))),String.Join(",",g.Select(Function(r) r("詳細").ToString()))},False)).CopyToDataTable()

Sample20240329-1 (2).zip (8.9 KB)

ありがとうございます!
勉強になりました。 :laughing: