【问题标题】:calculate the total time grouping by date and id using linq使用 linq 按日期和 id 计算总时间分组
【发布时间】:2013-06-12 14:09:36
【问题描述】:

我的数据是这样的

ID  |   START_DATE          |   END_DATE                |   Chapter
1       01/03/2013 05:15:14     01/03/2013 06:20:14         1
1       01/03/2013 06:25:33     01/03/2013 06:40:11         2
2       01/03/2013 05:01:34     01/03/2013 05:30:13         1
2       01/03/2013 05:31:20     01/03/2013 06:30:13         2
2       01/03/2013 06:32:20     01/03/2013 07:20:01         3
1       02/03/2013 05:15:14     01/03/2013 06:20:14         1
1       02/03/2013 06:25:33     01/03/2013 06:40:11         2

我想要这样的结果

ID  | Date          |       Total Duration
1       01/03/2013          Time in Minutes
1       02/03/2013          Time in Minutes
2       02/03/2013          Time in Minutes

有没有办法使用 C# 使用 linq 来做到这一点?

【问题讨论】:

  • 您用linq-to-objects 标签标记了问题。你对什么对象进行操作?
  • 我的对象是一个 List 并且“T”对象具有表的字段。这个帮助?

标签: c# .net linq .net-4.0 linq-to-objects


【解决方案1】:

按日期和 ID 对项目进行分组,并计算每个组的持续时间总和:

var query = from r in records
            group r by new { r.Id, r.StartDate.Date } into g
            select new {
               g.Key.Id,
               g.Key.Date,
               TotalDuration = g.Sum(x => (x.EndDate - x.StartDate).TotalMinutes)
            };

这里是working program

【讨论】:

  • 我确实喜欢你说的方式,我收到消息“无法将时间跨度转换为小数。”,我猜是因为 Sum 方法接收 Func 更新:对不起,我做了一个错误。
  • @RenatoRamosNascimento 我添加了演示此查询的程序的链接
猜你喜欢
  • 2020-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-26
  • 2015-06-01
  • 2021-12-19
  • 1970-01-01
相关资源
最近更新 更多