在特定时间间隔内按日期分组

苏咸

我有以下类别的对象的列表:

public class CounterData 
{
    public DateTime counterTime { get; set; }
    public int counterName { get; set; }
    public int count { get; set; }
}

例如,我有以下格式的数据列表{counterTime, counterName, count}

{"Aug  8 2016  9:00AM","counter1",11}
{"Aug  8 2016  9:05AM","counter2",12}
{"Aug  8 2016  9:11AM","counter3",47}
{"Aug  8 2016  9:12AM","counter3",20}
{"Aug  8 2016  9:13AM","counter1",12}
{"Aug  8 2016  9:30AM","counter3",61}
{"Aug  8 2016  9:35AM","counter2",35}
{"Aug  8 2016  9:39AM","counter1",16}
{"Aug  8 2016  9:40AM","counter1",92}
{"Aug  8 2016  9:53AM","counter2",19}

我想按每15分钟间隔对计数器进行分组counterNamecounterTime汇总。对于上面的示例,结果列表应为:

{"Aug  8 2016  9:00AM","counter1",23}
{"Aug  8 2016  9:00AM","counter2",12}
{"Aug  8 2016  9:00AM","counter3",67}
{"Aug  8 2016  9:30AM","counter3",61}
{"Aug  8 2016  9:30AM","counter2",35}
{"Aug  8 2016  9:30AM","counter1",108}
{"Aug  8 2016  9:45AM","counter2",19}

从9:00 AM-9:15AM,有2个条目counter1因此,该count值是条目的总和。其他柜台也是如此。

我们可以使用LINQ GroupBy解决此问题吗?如果是这样,那又如何?

戴维

下面是查房的时间解决下来到最近的15分钟。它使用AddSeconds基本上摆脱秒部分DateTime,则AddMinutes%向下舍分钟:

var data = counters
    .GroupBy(cd => new
    {
        Date = cd.counterTime.AddSeconds(-cd.counterTime.Second)
                   .AddMinutes(-cd.counterTime.Minute % 15),
        CounterName = cd.counterName
    })
    .Select(g => new
    {
        Date = g.Key.Date,
        CounterName = g.Key.CounterName,
        SumCount = g.Sum(cd => cd.count)
    });

但是,这不适用于LINQ to Entities(即Entity Framework),因此您需要对其进行一些微调以使用以下DbFunctions方法:

var data = counters
    .GroupBy(cd => new
    {
        Date = DbFunctions.AddMinutes(
            DbFunctions.AddSeconds(cd.counterTime, -cd.counterTime.Second), 
            -cd.counterTime.Minute % 15),
        CounterName = cd.counterName
    })
    .Select(g => new
    {
        Date = g.Key.Date,
        CounterName = g.Key.CounterName,
        SumCount = g.Sum(cd => cd.count)
    });

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何按特定时间段内的时间间隔分组?

来自分类Dev

SQLite:在特定时间间隔内对数据进行分组

来自分类Dev

对特定时间间隔内的值进行分组并计算均值

来自分类Dev

MYSQL在特定时间按日期时间范围分组

来自分类Dev

在特定时间间隔内循环

来自分类Dev

如何使用Spark Scala或sql对特定时间间隔内的记录进行分组?

来自分类Dev

Python脚本可在特定时间间隔内匹配日期

来自分类Dev

从时间间隔中提取按日期分组的日期范围

来自分类Dev

如何在Python中的指定时间段内按日期分组和对日期时间应用聚合函数?

来自分类Dev

在sqlite中检查特定时间间隔内的时间

来自分类Dev

在特定时间间隔后在for循环内执行setTimeout

来自分类Dev

在特定时间间隔内避免重复数据

来自分类Dev

获取特定时间间隔内的预定事件

来自分类Dev

在特定时间间隔内避免重复数据

来自分类Dev

计算Python中特定时间间隔内的记录数

来自分类Dev

如何让 ROBLOX 中的对象在特定时间间隔内消失?

来自分类Dev

SQL Server:如何根据时间间隔(例如2小时内)按日期时间列分组

来自分类Dev

按小时间隔分组

来自分类Dev

在PySpark数据框中的选定时间间隔内的日期间隔之间复制记录

来自分类Dev

如何制作每个特定时间间隔的熊猫日期时间直方图?

来自分类Dev

将日期间隔按其开始时间和结束时间进行分组

来自分类Dev

特定时间间隔的查询结果

来自分类Dev

获取特定时间间隔的值

来自分类Dev

以特定时间间隔重新采样 DataFrame

来自分类Dev

如何提高按特定时间间隔对记录进行计数的查询的性能?

来自分类Dev

特定时间的日期更改

来自分类Dev

按半小时间隔分组

来自分类Dev

MongoDB按日期间隔分组

来自分类Dev

按日期间隔分组Oracle

Related 相关文章

  1. 1

    如何按特定时间段内的时间间隔分组?

  2. 2

    SQLite:在特定时间间隔内对数据进行分组

  3. 3

    对特定时间间隔内的值进行分组并计算均值

  4. 4

    MYSQL在特定时间按日期时间范围分组

  5. 5

    在特定时间间隔内循环

  6. 6

    如何使用Spark Scala或sql对特定时间间隔内的记录进行分组?

  7. 7

    Python脚本可在特定时间间隔内匹配日期

  8. 8

    从时间间隔中提取按日期分组的日期范围

  9. 9

    如何在Python中的指定时间段内按日期分组和对日期时间应用聚合函数?

  10. 10

    在sqlite中检查特定时间间隔内的时间

  11. 11

    在特定时间间隔后在for循环内执行setTimeout

  12. 12

    在特定时间间隔内避免重复数据

  13. 13

    获取特定时间间隔内的预定事件

  14. 14

    在特定时间间隔内避免重复数据

  15. 15

    计算Python中特定时间间隔内的记录数

  16. 16

    如何让 ROBLOX 中的对象在特定时间间隔内消失?

  17. 17

    SQL Server:如何根据时间间隔(例如2小时内)按日期时间列分组

  18. 18

    按小时间隔分组

  19. 19

    在PySpark数据框中的选定时间间隔内的日期间隔之间复制记录

  20. 20

    如何制作每个特定时间间隔的熊猫日期时间直方图?

  21. 21

    将日期间隔按其开始时间和结束时间进行分组

  22. 22

    特定时间间隔的查询结果

  23. 23

    获取特定时间间隔的值

  24. 24

    以特定时间间隔重新采样 DataFrame

  25. 25

    如何提高按特定时间间隔对记录进行计数的查询的性能?

  26. 26

    特定时间的日期更改

  27. 27

    按半小时间隔分组

  28. 28

    MongoDB按日期间隔分组

  29. 29

    按日期间隔分组Oracle

热门标签

归档