0

私は常に LINQ でのグループ化に苦労してきました。datetime フィールドの日付部分に基づいてグループ化し、他のフィールドを集約したいと考えています。

テーブル レイアウトの例

myDateField     myIntField1    myIntField2    myIntField3
01/02/2013      5              5              5
01/02/2013      5              5              5
02/02/2013      10             10             10
02/02/2013      10             10             10

リストを返したい

myDateField     myIntField1    myIntField2    myIntField3
01/02/2013      10             10             10
02/02/2013      20             20             20

msdn の例を使用して以下を管理しましたが、その使用方法について頭を悩ませることはできません。新しいグループにアクセスできるはずですが、BookedList匿名型エラーなどが発生し続けると記載されています。

        Dim bestdays = From a In b
                        Where a.BookedOn < a.EventDayTime And a.Cancelled = False
                        Group By BookDate = a.BookedOn.Value.Date
                        Into BookedList = Group
4

2 に答える 2

1

構文はInto [FIELD_NAME1] = [AGGREGATE_FUNCTION1]([VALUE1]), [FIELD_NAME2] = [AGGREGATE_FUNCTION2]([VALUE2]) .... キーは自動的に返されるオブジェクトの一部になります。

したがって、次のようなものを探しています。

Class TableRow
  Public Property myDateField As Date
  Public Property myIntField1 As Integer
  Public Property myIntField2 As Integer
  Public Property myIntField3 As Integer
  Sub New(mydate As Date,
          myint1 As Integer, myint2 As Integer, myint3 As Integer)
    myDateField = mydate
    myIntField1 = myint1
    myIntField2 = myint2
    myIntField3 = myint3
  End Sub
End Class

Sub Main()
  Dim tablesRows As New List(Of TableRow)
  tablesRows.Add(New TableRow(Today, 5, 10, 15))
  tablesRows.Add(New TableRow(Today, 6, 11, 16))

  Dim v = From r In tablesRows Group By r.myDateField
          Into Total1 = Sum(r.myIntField1),
               Total2 = Sum(r.myIntField2),
               Total3 = Sum(r.myIntField3)
End Sub
于 2013-05-14T13:53:03.437 に答える