VB.NET で データテーブルをLINQ でソート Group By sum して合計する

LINQでソートしてみました

motoTable As DataTable には、DBから取得したデータが入っていることとします。

 

Dim query = From row In motoTable.AsEnumerable
Order By row("StaffCode"), row("WorkingDay")
Select row

Dim SortedTable As DataTable = query.CopyToDataTable()

 

これでSortedTable に ソート済みのデータが入ります。

 

 

次に Group By して Sumする場合。

 

Dim query = From row In motoTable.AsEnumerable
Group row By スタッフコード = row.Field(Of Integer)("スタッフコード")
   Into
    金額1合計 = Sum(row.Field(Of Decimal)("金額1")),
    金額2合計 = Sum(row.Field(Of Decimal)("金額2")),
    金額3合計= Sum(row.Field(Of Decimal)("金額3"))
  Order By スタッフコード
  Select New Object() {
     スタッフコード,
    金額1合計,
    金額2合計,
    金額3合計
     }


Dim sumtable As New DataTable("sumTable")
     sumtable.Columns.Add("スタッフコード", GetType(Integer))
     sumtable.Columns.Add("金額1合計", GetType(Decimal))
     sumtable.Columns.Add("金額2合計", GetType(Decimal))
     sumtable.Columns.Add("金額3合計", GetType(Decimal))

For Each row As Object() In query
     sumtable.Rows.Add(row)
Next row