我有一个Linq查询:
people.Where(x => EntityFunctions.DiffHours(x.CreateDate, dtMatch) > 0)
仅在Linq 2 Entities
内有效。
如何在没有实体的情况下运行此方法?
到目前为止我尝试过:
people.Where(x => (x.CreateDate - dtMatch).TotalHours > 0)
......似乎给出了不同的结果
答案 0 :(得分:1)
简而言之:要使2个语句等效,请将TotalHours
更改为Math.Floor((x.CreateDate - dtMatch).TotalHours)
people.Where(x => Math.Floor((x.CreateDate - dtMatch).TotalHours) > 0)
TotalHours
将返回小数。因此,如果两个日期之间有30分钟,那么将返回0.5
。当.5大于0时,上述返回true。如果您想要整个小时,请将其更改为Math.Floor(TotalHours)而不是TotalHours
。这会将其四舍五入到下一个最大整数。
EntityFunctions.DiffHours - 返回一个表示整个小时数的整数,如果是30分钟。差异然后是0就是结果。
答案 1 :(得分:1)
也许,如果dtMatch超过CreateDate,你应该考虑这种情况,如果它在以下情况下应该考虑:
people.Where(x => Math.Abs((x.CreateDate - dtMatch).TotalHours) > 0)