web-dev-qa-db-ja.com

vb.netのlinqを使用したDatatablegroup by

データテーブルから集計値を取得しようとしています。しかし、その方法を理解することはできません。 c#でいくつかの例を見ましたが、それらをvb.netに変換できませんでした。

私はデータテーブルを持っています

Month, campaign, sales, leads, gross
1           1                5         10       1000
1            2               0          5         0
2            1               2          0         300
2            2               1          3         200

結果を得る必要があります:

Month, sales, leads, gross
1           5        15       1000
2           3         3         500

手動で値をループして結合したくありません。助けてください

9
Nick

あなたはしたい Group by MonthSumを使用して、グループを合計できます。

Dim query = From row In dt
        Group row By Month = row.Field(Of Int32)("Month") Into MonthGroup = Group
        Select New With {
            Key Month,
            .Sales = MonthGroup.Sum(Function(r) r.Field(Of Int32)("Sales")),
            .Leads = MonthGroup.Sum(Function(r) r.Field(Of Int32)("Leads")),
            .Gross = MonthGroup.Sum(Function(r) r.Field(Of Int32)("Gross"))
       }

For Each x In query
    Console.WriteLine("Month:{0} {1} {2} {3}", x.Month, x.Sales, x.Leads, x.Gross)
Next

これは、Linqクエリ構文とメソッド構文を組み合わせたものです。

13
Tim Schmelter