【问题标题】:How to sum group difference between dates using linq/lambda?如何使用 linq/lambda 求和日期之间的组差异?
【发布时间】:2025-12-15 08:45:02
【问题描述】:

我一直在寻找一种方法来做到这一点,但我没有成功。以下是我的问题,我有一个看起来像这样的表:

ID|CATEGORY|START_DATE               |END_DATE
1  T1       2019-08-29 12:00:00       2019-08-29 12:10:00
2  T1       2019-08-30 13:00:00       2019-08-30 13:20:00
3  T2       2019-08-30 14:00:00       2019-08-30 14:10:00

我想要做的是按类别分组并对两个日期之间的差异求和并得到如下结果:T1 --> 30 分钟,t2 --> 10 分钟

这是我尝试过的:

foreach (IGrouping<string, TABLE1> group in result)
{
    series.Add(new PieSerie("SerieName", group.AsEnumerable().Sum(x => (x.START_DATE- x.END_DATE).Value.Seconds  )));
}

但它不起作用。我得到的每一个结果都是“0”而不是总分钟数。

【问题讨论】:

标签: c# entity-framework lambda


【解决方案1】:

如果你从2019-08-30 14:10:00 中减去(作为DateTime2019-08-30 14:00:00,你会得到(作为TimeSpan00:10:00,也就是说“零小时、10 分钟和零秒”。 “零秒”是您从.Seconds 获得0 的线索。您可能想要.TotalSeconds(即600),或者只保留整个TimeSpan

【讨论】:

  • 我很困惑,我是 lambda 和 linq 查询的新手,我一直在使用 DateTime,从不使用 TimeSpan。这就是为什么我试图获得这样的秒数。但是 TotalSeconds 解决了这个问题。谢谢!!