2006年02月24日

DataTable:列の集約計算

DataTableの列の最大値、最小値、合計値、平均値を求める方法です。

昔はforeachで回す方法しか知りませんでした。

DataTable dt;
foreach (DataRow dr in dt.Rows)
{
    sum += (decimal) dr[列名];
}


しかし、次の方法が簡単&便利です。なんと1行だけで済みます。
Computeを使用します。

dt.Compute("SUM([列名])", null);

さらに2個目の引数でフィルターをかけて計算対象の列を絞ることができます。(ANDORも使えます。)
例えば、0より大きいものだけの合計を計算したい場合は以下の様にします。

dt.Compute("SUM([列名])", "[列名]>0");

さらに10未満という条件を加えます。

dt.Compute("SUM([列名])", "[列名]>0 AND [列名]<10");


こんな感じで色々な使い方ができそうです。
これが合計値の求め方ですが、SUMの部分をMAX(最大値)、MIN(最小値)、AVE(平均値)と記述すればそれぞれの集約計算をしてくれます。これは便利。
posted by ゆぅ☆ at 12:39 | Comment(0) | TrackBack(0) | C#
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/13703955

この記事へのトラックバック