0

我有以下代码行:

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 中工作?

4

1 回答 1

0

您使用的 DateTime 方法无法被 l2e 翻译。考虑将EntityFunctions类用于支持的时间操作。

有关更多详细信息,请参见此处

例如,假设您的时间间隔是 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
         )
于 2012-06-27T23:54:29.063 回答