【发布时间】:2014-04-21 08:29:33
【问题描述】:
我有一个这种格式的数据库:
Datetime | Air Temperature
---------------------+-----------------
... |
01.12.2013 00:00:00 | 2
01.12.2013 01:00:00 | 2
01.12.2013 02:00:00 | 2
01.12.2013 03:00:00 | 1.7
01.12.2013 04:00:00 | 2
01.12.2013 05:00:00 | 2
01.12.2013 06:00:00 | 2.2
...
并尝试使用 VB.Net 中的 linq 对日期范围内每一天的结果进行分组:
Dim query = (From i In db _
Where i.Datetime > #12/1/2013 00:00# AndAlso i.Datetime < #1/1/2014 00:00# _
Select i).GroupBy(Function(f) f.Datetime.Day)
Console.WriteLine(query)
但查询输出是按数据库中的每个项目(每小时)而不是按天分组的:
[
{
"Key": 1,
"Values": [
{
"Datetime": "2013-12-01T00:00:00",
"AirTemperature": 2.0,
}
]
},
{
"Key": 1,
"Values": [
{
"Datetime": "2013-12-01T01:00:00",
"AirTemperature": 2.0,
}
]
},
...
首先我使用i.DateTime.Date 作为分组运算符,但由于它没有按我想要的方式工作,我认为将 Datetime 对象转换为短日期字符串可以让我到达那里。它并没有改变任何事情,作为新的 linq 用户,我想寻求帮助。
【问题讨论】:
-
您是否需要每天单一的总温度(例如平均值),如果是这样,在 GroupBy 之后您可以使用类似 Select(Function(key,values) values.Average(Function(v) v.t) )
-
是的,这就是我想要的 - 每天提取最高和最低温度,所以我需要分组......但仍然无法到达那里