none
DataTableのデータをグループ化して出力 RRS feed

  • 質問

  • いつもお世話になっております。

    このようなことができるのどうかがわからないのですが、
    あるデータテーブルに保持したデータを集計(GROUP化)して表示させる事はできますか?

    -----------------
    商品    数量
    -----------------
    AAA    1
    AAA    2
    AAA    3
    BBB    1
    CCC    2
    CCC    5

    このデータを以下のような状態にしてグリッドに表示させたいのですが…

    -----------------
    商品    数量
    -----------------
    AAA    6
    BBB    1

    2006年10月10日 5:24

すべての返信

  • ないと思うので、Dictionaryクラスとか使って作った記憶があります。
    場合によってはDataTableのほうがいいかもですが。

    2006年10月10日 5:42
  • mars12さん、ご返信ありがとうございます。

    やはりナイのですか…。

    Dictionaryクラス??
    これまた初めて聞くクラス名です。
    (検索して見ましたがHashTableのジェネリック版という情報しか得られませんでした。)
    この場合、結構複雑なソースになりますか?

    となるとやはり明細と集計データは別々のデータテーブルに取得した方が良いのでしょうか。

    現在考えているのは、明細と集計を別々のグリッドに表示させ、
    明細の値を変更した場合には集計の値を動的に計算して表示させるということがしたかったのです。

    2006年10月10日 7:20
  • > この場合、結構複雑なソースになりますか?

    別に難しくないと思います。
    単にテーブルから1行ずつループでとって、計算していくだけですから。
    別にDictionaryじゃなくてもDataTableでもいいと思います。

    # 商品名をキーにしてやればDataTableでもおなじことなのですが、
    # 机上で考える限りDictionaryの方が簡単に(コードが短く)思えるだけです。

    参考:
    ハッシュテーブル(連想配列)を使うには?(Dictionaryクラス編)[2.0のみ、C#、VB]
    http://www.atmarkit.co.jp/fdotnet/dotnettips/429dictionary/dictionary.html

    > となるとやはり明細と集計データは別々のデータテーブルに取得した方が良いのでしょうか。
    > (中略)
    > 明細の値を変更した場合には集計の値を動的に計算して表示させるということがしたかったのです。

    別々のテーブルにしたとしても、明細テーブルに更新があった場合は
    明細データテーブルから集計データテーブルを常に作るわけですよね?
    そういうわけで、別々でも明細だけでもどちらでもよいと思います。

    2006年10月10日 7:39