2017-02-06 172 views
1

使用EntityFunctions我有一个LINQ查询:没有实体框架

people.Where(x => EntityFunctions.DiffHours(x.CreateDate, dtMatch) > 0) 

,它只能在Linq 2 Entities工作。

如何让此方法在没有实体的情况下运行?

我试过到目前为止:

people.Where(x => (x.CreateDate - dtMatch).TotalHours > 0) 

...似乎给不同的结果

+0

people.Where(X =>(x.CreateDate - dtMatch).TotalHours> 0),通常作品。你能告诉我们你看到的这两种说法有什么区别吗? – Teja

回答

1

总之:为了使2所陈述等同变化TotalHoursMath.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分钟。那么差异就是结果。

+2

使用小时数只能获得总是小于24的小时数组件。这是一个坏主意! – Teja

+0

@Teja - 好点,让我更新。 – Igor

+0

@Teja - 更新... – Igor

1

也许,你应该考虑的情况下,如果dtMatch超过CREATEDATE和的情况下,如果它是在:

people.Where(x => Math.Abs((x.CreateDate - dtMatch).TotalHours) > 0)