Linq DateTime差异总和

时间:2017-08-11 14:57:42

标签: c# entity-framework linq

我有一个小组,我想找到两个日期之间的差异,然后将结果添加到最终总和。但我不断得到无法从时间跨度转换为Long的错误。 这是我使用的代码:

WorkTime

TimeSpanEnddate类型,scandateDateTime类型为SELECT IDENT_CURRENT('Request');。 我怎么能得到时间总和?

1 个答案:

答案 0 :(得分:0)

这是一项具有挑战性的任务,主要是因为LINQ to Entities不支持DateTimeTimeSpan的大多数CLR方法/属性/运算符。

我看到的唯一解决方案是使用DbFunctions.DiffSeconds规范函数来获取秒数差异,将它们相加,然后使用另一个规范函数DbFunctions.CreateTime转换为TimeSpan,手动计算小时数,总秒数的分钟和秒数:

...
group p by k into t
let workSecs = t.Sum(x => DbFunctions.DiffSeconds(x.Scandate, x.EndDate)) ?? 0
select new OeeRecovery
{
    ...
    WorkTime = DbFunctions.CreateTime(workSecs / 3600, (workSecs / 60) % 60, workSecs % 60)
    ...
}