【发布时间】:2012-02-09 23:49:24
【问题描述】:
我试图了解如何使用 LINQ 按时间间隔对数据进行分组;然后理想地聚合每个组。
找到大量具有明确日期范围的示例,我尝试按时间段(例如 5 分钟、1 小时、1 天)进行分组。
例如,我有一个用值包装 DateTime 的类:
public class Sample
{
public DateTime timestamp;
public double value;
}
这些观察结果作为一个系列包含在 List 集合中:
List<Sample> series;
因此,要按每小时的时间段分组并按平均值汇总价值,我正在尝试执行以下操作:
var grouped = from s in series
group s by new TimeSpan(1, 0, 0) into g
select new { timestamp = g.Key, value = g.Average(s => s.value };
这从根本上是有缺陷的,因为它将 TimeSpan 本身分组。我不明白如何在查询中使用 TimeSpan(或任何表示间隔的数据类型)。
【问题讨论】:
-
您能用示例数据描述您的问题吗?
-
@AliAmiri - 我认为这已经足够清楚了。示例输出可能会有所帮助。
-
好问题。我相信很多人都在为这个确切的任务而苦苦挣扎。时间序列数据似乎有其困难。
标签: c# linq aggregate-functions