2024/02/25(日)07:17
Linqで列1と列2と列3でグループ化して列4の平均値を求めるコード
using System;
using System.Data;
using System.Linq;
class Program
{
static void Main()
{
// サンプルのDataTableを作成します
DataTable table = new DataTable();
table.Columns.Add("Column1", typeof(int));
table.Columns.Add("Column2", typeof(string));
table.Columns.Add("Column3", typeof(double));
table.Columns.Add("Column4", typeof(double));
// サンプルデータを追加します
table.Rows.Add(1, "A", 10.0, 100.0);
table.Rows.Add(1, "A", 20.0, 200.0);
table.Rows.Add(2, "B", 30.0, 300.0);
table.Rows.Add(2, "B", 40.0, 400.0);
// LINQを使用して列1、列2、列3でグループ化し、列4の平均値を求めます
var result = from DataRow row in table.Rows
group row by new { Column1 = row.Field<int>("Column1"), Column2 = row.Field<string>("Column2"), Column3 = row.Field<double>("Column3") } into grp
select new
{
Column1 = grp.Key.Column1,
Column2 = grp.Key.Column2,
Column3 = grp.Key.Column3,
AvgColumn4 = grp.Average(r => r.Field<double>("Column4"))
};
// 結果を出力します
foreach (var item in result)
{
Console.WriteLine($"Column1: {item.Column1}, Column2: {item.Column2}, Column3: {item.Column3}, AvgColumn4: {item.AvgColumn4}");
}
}
}