2

我有一个对象列表,我需要将它们分组为 5 分钟块,在 5 分钟滚动时拆分,即 0、5、10、15、20、25 分钟等

以这个时间列表(dd/MM/yyyy hh:mm)为例:

01/01/2000 17:00
01/01/2000 17:07
01/01/2000 17:08
01/01/2000 17:09
01/01/2000 17:10
01/01/2000 17:11
01/01/2000 17:12
05/05/2012 10:45
05/05/2012 10:46

我需要这个来返回:

01/01/2000 17:00
----------------
01/01/2000 17:07
01/01/2000 17:08
01/01/2000 17:09
01/01/2000 17:10
----------------
01/01/2000 17:11
01/01/2000 17:12
----------------
05/05/2012 10:45
----------------
05/05/2012 10:46
4

2 回答 2

4

您可以在 LINQ 中使用 GroupBy:

 times.GroupBy(y => (int)(y.Ticks / TimeSpan.TicksPerMinute / 5))

只需将每个 DateTime 表示的总分钟数除以 5,即可将其减少到适当的编号为 5 分钟的间隔。

于 2013-06-25T04:48:30.350 回答
0

从概念上讲,我会首先按日期分组,然后遍历所有日期组并将不同的条目放入 5 分钟的时间段中。时间桶也许可以实现为Dictionary<int,List<DateTime>>您添加到的预定义

于 2013-06-25T04:31:21.533 回答