2017-02-06 171 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)