3

データテーブルのデータをyear\monthでグループ化するlinqクエリを作成しようとしています。

どちらか一方でグループ化できましたが、両方ではありません...

       Dim q = From p As DataRow In DTCalls.Rows _
                Group By Year = p("DATE").Year _
                Into CALLS = Count(p("CALL_ID")) _
                Select Year, CALLS

同じクエリ内で年、月でグループ化/並べ替えるにはどうすればよいですか?

ソースデータ:

DATE                    CALL_ID
2012-05-01 23:52:44   6587
2012-02-03 09:17:41   6562
2012-05-01 06:32:41   6565
2012-02-03 12:47:41   6565
2011-05-31 08:37:41   6511

期待される出力:

DATE       COUNT
2011-05      1
2012-02      2
2012-05      2
4

2 に答える 2

3

2 つのプロパティ (年 + 月) の匿名型でグループ化する必要があります。Keyまた、VB.NET でキーワードを適用する必要があります。

匿名型 (Visual Basic)

Dim dateGroups =
    From row In table
    Let year = row.Field(Of Date)("DATE").Year
    Let month = row.Field(Of Date)("DATE").Month
    Group row By YearMonth = New With {
        Key .year = year,
        Key .month = month
    } Into DateGroup = Group
    Order By YearMonth.year, YearMonth.month

For Each grp In dateGroups
    Console.WriteLine("Date: {0}-{1} Count:{2}",
                      grp.YearMonth.year,
                      grp.YearMonth.month,
                      grp.DateGroup.Count())
Next
于 2012-10-10T14:25:28.023 に答える
0

2 つの値を含む匿名型を作成する必要があります。または、タプルを使用できます。

Group By Tuple.Create(p("DATE").Year, p("DATE").Month)
于 2012-10-10T14:17:29.593 に答える