c# - 使用 linq 计算按日期和 id 分组的总时间

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

我的数据是这样的

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 来做到这一点吗?

最佳答案

按日期和 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 .

关于c# - 使用 linq 计算按日期和 id 分组的总时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17067717/

相关文章:

c# - 使用表创建 c# 类。 Sqlite网

c# - 在空 IEnumerable<int> 上为 FirstOrDefault() 返回 null?

c# - 一对一的自关系和 Entity Framework

c# - 将属性添加到动态对象 .NET

c# - 返回 json 的 <T> 字符串

c# - 具有多个计数的 Linq 查询

c# - 使用 Interop C# 保存 Excel 电子表格

c# - 将字符缓冲区从 .NET 传递到 COM 并更新它

c# - 如何检测主线程何时终止?

c# - 如何在使用 linq 维护对象的原始形式的同时过滤列表中的列表?