LinQで列1、列2、列3でグループ化して列4の平均値を求めるコード
Imports System.LinqModule Module1 Sub Main() ' サンプルのDataTableを作成 Dim table As New DataTable() table.Columns.Add("Column1") table.Columns.Add("Column2") table.Columns.Add("Column3") table.Columns.Add("Column4", GetType(Double)) ' サンプルのデータを追加 table.Rows.Add("Group1", "Item1", "SubItem1", 10.0) table.Rows.Add("Group1", "Item1", "SubItem2", 15.0) table.Rows.Add("Group1", "Item2", "SubItem1", 20.0) table.Rows.Add("Group2", "Item1", "SubItem1", 25.0) table.Rows.Add("Group2", "Item2", "SubItem2", 30.0) ' LINQクエリを使用して列1、列2、列3でグループ化し、列4の平均値を求める Dim query = From row In table.AsEnumerable() Group row By Key = New With { Key .Column1 = row.Field(Of String)("Column1"), Key .Column2 = row.Field(Of String)("Column2"), Key .Column3 = row.Field(Of String)("Column3") } Into Group Select New With { .Column1 = Key.Column1, .Column2 = Key.Column2, .Column3 = Key.Column3, .AverageColumn4 = Group.Average(Function(r) r.Field(Of Double)("Column4")) } ' 結果を表示 For Each item In query Console.WriteLine("Column1: {0}, Column2: {1}, Column3: {2}, AverageColumn4: {3}", item.Column1, item.Column2, item.Column3, item.AverageColumn4) Next End SubEnd Module