.net LINQ Group By和聚合字段
在LINQ中,我一直在努力分组,我想根据datetime字段的日期部分进行分组,并聚合其他字段 表格布局示例.net LINQ Group By和聚合字段,.net,vb.net,linq,linq-to-sql,group-by,.net,Vb.net,Linq,Linq To Sql,Group By,在LINQ中,我一直在努力分组,我想根据datetime字段的日期部分进行分组,并聚合其他字段 表格布局示例 myDateField myIntField1 myIntField2 myIntField3 01/02/2013 5 5 5 01/02/2013 5 5 5 02/02/2013 10 10
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
Dim bestdays=从a到b
其中a.BookedOn
也许这个sld可以胜任你的工作
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).Take(5)
Dim bestdays=(从b中的a开始)
其中a.BookedOn
语法是到[FIELD\u NAME1]=[AGGREGATE\u FUNCTION1]([VALUE1]),[FIELD\u NAME2]=[AGGREGATE\u 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
为您执行此操作(其中n是从序列开始的连续元素数)。或者你的问题是关于你得到的错误?抱歉@DaveRook标题可能有误导性,我知道如何获得5条记录,但我上面的代码似乎没有分组。它也不会聚合myIntFields。我知道如何在SQL中做到这一点-对所有myInt字段求和,然后按日期字段分组,我如何用LINQ-SQL实现这一点?感谢Manolis,请参阅上面的评论,更改标题,因为我意识到这可能会误导,我知道如何获取5条记录,但我的分组依据不起作用。尝试以下操作:分组依据a.BookedOnPerfect!不仅是一个答案,我想你也帮我弄清楚了这是怎么回事。非常感谢!