人気ブログランキング | 話題のタグを見る
(.Net)DataTableで特定の列の値を集計する
DataTable では特例の列の合計や平均などの集計ができるメソッドがあるようです。
そのメソッドがDataTable.Compute()です。

これを使うと今までいちいとループでまわしてた手間が減るので非常に楽ですね。

単に全行の合計値を求めるだけどこう書けます。
'dtblはDataTableオブジェクト Toral列を持っているとする
Dim objSum As Object = dtbl.Compute("Sum(Total)", Nothing)

Compute メソッドの第二引数で、フィルタが指定できるので、特定の条件のみのデータの場合に集計することもできます。
'ID列の値が10より大きい行のみ集計の対象
Dim objSum As Object = dtbl.Compute("Sum(Total)", "Id > 10")
'これはMSDNにあった例ですが、日付も条件に指定できる見たい
Dim objSum As Object = dtbl.Compute("Sum(Total)", "colDate > 1/1/99 AND colDate < 17/1/99 ")

どういう集約型や演算子が使えるは、MSDN:DataColumn.Expressionプロパティを見るとわかります。
ただ、MSDNは長いのでパッと知りたいときは下記サイトが参考になります。
DataTableの集約計算を行う(Compute)

なお、集計対象の行がないと DBNull が帰ったので注意が必要です。
by jehoshaphat | 2009-03-09 19:29 | .Net開発


<< (.Net)Dictionar... SDカードのパーティション操作... >>