我有一个小组,我想找到两个日期之间的差异,然后将结果添加到最终总和。但我不断得到无法从时间跨度转换为Long的错误。 这是我使用的代码:
WorkTime
TimeSpan
是Enddate
类型,scandate
和DateTime
类型为SELECT IDENT_CURRENT('Request');
。
我怎么能得到时间总和?
答案 0 :(得分:0)
这是一项具有挑战性的任务,主要是因为LINQ to Entities不支持DateTime
和TimeSpan
的大多数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)
...
}