注目の記事 PICK UP!

  • C#

C# DataTableからComputeを使って合計値や平均値を算出する

DataTableに対して集約関数を使って合計や平均などを算出したい場合があります。その時の方法を紹介します。

 

スポンサーリンク

 

DataTable dt = new DataTable();

// DataTableに列を追加
dt.Columns.Add("ID", typeof(string));
dt.Columns.Add("氏名", typeof(string));
dt.Columns.Add("住所", typeof(string));
dt.Columns.Add("家賃", typeof(int));

// DataRowを使って2レコード追加
for (int i = 0; i < 2; i++)
{
    DataRow dr = dt.NewRow();
    if (i == 0)
    {
        dr["ID"] = i + 1;
        dr["氏名"] = "山田太郎";
        dr["住所"] = "東京都";
        dr["家賃"] = 100000;
        dt.Rows.Add(dr);
    }
    else
    {
        dr["ID"] = i + 1;
        dr["氏名"] = "山田花子";
        dr["住所"] = "神奈川県";
        dr["家賃"] = 90000;
        dt.Rows.Add(dr);
    }
}
// 最大値
object max = dt.Compute("Max(家賃)", null);

// 最小値
object min = dt.Compute("Min(家賃)", null);

// 合計値
object sum = dt.Compute("Sum(家賃)", null);

// 平均値
object avg = dt.Compute("Avg(家賃)", null);

// 件数
object cnt = dt.Compute("Count(家賃)", null);

// 標準偏差
bject stdv = dt.Compute("StDev(家賃)", null);

// 単一条件
object pay1 = dt.Compute("Count(家賃)", "住所 = '東京都'");

// 複合条件
object pay2 = dt.Compute("Count(家賃)", "60000 < 家賃 and 家賃 < 100000");

Computeメソッドの返り値は、object型で返ってきます。

[補足]
外部ファイルのCSVをそのままデータテーブルに取り込んだとき、家賃列はstring型として取り込まれるので、文字列に対してComputeメソッドは実行できません。

スポンサーリンク

  • コメント: 9

関連記事

  1. C# DataTableの特定レコードを削除

  2. C# DataTableのデータをゼロパディング(ゼロ埋め)する

  3. C# LINQでボリンジャーバンドを作成する

  4. C# LINQを使ってDataTableを並び替える

  5. C# DataTableにExcelを読み込む

  6. C# DataTableをコピーする

  7. C# DataTableの特定データにNULLを入れる

  8. C# Webページのデータを取得する方法

  9. C# DataTableにカラムを追加

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

PAGE TOP