注目の記事 PICK UP!

  • C#

C# LINQを使って合計値や平均値を算出する

DataTableに対して、件数、合計値、最大値、最小値、平均値を算出したいとき、Computeメソッドの方法もありますが、ここでは、LINQを使った紹介をします。

スポンサーリンク

 

Computeを使って集約関数を実行する方法はこちら

 


DataTable dt = new DataTable();

// DataTableに列を追加
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Section", typeof(string));
dt.Columns.Add("Salary", typeof(int));
dt.Columns.Add("Bonus", typeof(double));

//サンプルデータ作成
for (int i = 0; i < 2; i++)
{
    DataRow dr = dt.NewRow();
    if (i == 0)
    {
        dr["ID"] = i + 1;
        dr["Name"] = "山田太郎";
        dr["Section"] = "IT部";
        dr["Salary"] = 350000;
        dr["Bonus"] = 700000;
        dt.Rows.Add(dr);
    }
    else
    {
        dr["ID"] = i + 1;
        dr["Name"] = "山田花子";
        dr["Section"] = "IT部";
        dr["Salary"] = 250000;
        dr["Bonus"] = 500000;
        dt.Rows.Add(dr);

    }
}

// 集約関数の結果
var result = from tbl in dt.AsEnumerable()
             group tbl by tbl.Field<string>("Section") into g
             select new
             {
                 section = g.Key,
                 count = g.Count(),
                 sum = g.Sum(p => p.Field<int>("Salary")),
                 max = g.Max(p => p.Field<int>("Salary")),
                 min = g.Min(p => p.Field<int>("Salary")),
                 avg = g.Average(p => p.Field<double>("Bonus"))
             };
// キー
string section = result.ElementAt(0).section; // IT部

// 件数
int cnt = result.ElementAt(0).count; // 2

// 合計値
int sum = result.ElementAt(0).sum; // 700000

// 最大値
int max = result.ElementAt(0).max; // 350000

// 最小値
int min = result.ElementAt(0).min; // 250000

// 平均値
double avg = result.ElementAt(0).avg; // 600000.0

 

集約関数の実行

データテーブル

上記のDataTableに対して、”Section”をキーにグルーピング(36行目)を行っています。

サンプルデータでは、便宜上、IT部だけ用意しました。

36行目のresultの中身

集約関数の結果

 

ElementAtメソッドでデータを抽出

48行目~63行目までは、resultからElementAtメソッドを使うことでデータを取り出しています。

 

スポンサーリンク

  • コメント: 16

関連記事

  1. C# ファイルダイアログからテキストを読み込む方法

  2. C# JSONファイルからLINQを使って集計する方法 – 合計値

  3. C# DataTableにレコード追加

  4. C# LINQで移動平均線を作成する

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

  6. C# DataTableの特定カラムを削除

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

  8. C# チャートデータからローソク足を描画する方法

  9. C# JSONファイルの読み込み方法

コメント

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

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

PAGE TOP