我有以下代码行:
group p by new DateTime((p.DateTime.Value.Ticks / interval.Ticks) * interval.Ticks).TimeOfDay
这在LINQ-to-Objects中很有用,但在LINQ-to-Entities中不起作用。我有两个问题:
为什么会这样?我不明白如何将时间除以一个间隔然后乘以相同的间隔会神奇地将我的12:37转换为12:30。我对数学的基本经验是(A / B)* B = A 。 (在评论中被@spencer清理过来。非常感谢!)
如何重新格式化此行以在LINQ-to-Entities中工作?
答案 0 :(得分:0)
您正在使用的DateTime方法无法由l2e翻译。考虑使用EntityFunctions
类进行支持的时间操作。
有关详细信息,请参阅here。
例如,假设你的间隔是60秒,我猜你可能会做类似的事情:
DateTime? start=new DateTime(2000,1,1); //start of first interval
...group p by
EntityFunctions
.AddSeconds(
start,
(EntityFunctions
.DiffSeconds(p.DateTime,start)/60)*60
)