2017-02-06 9 views
1

なしEntityFunctionsを使用して、私は、LINQクエリを持っている:だけLinq 2 Entities内で動作んエンティティフレームワーク

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

エンティティなしでこのメソッドを実行させるにはどうすればよいですか?

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

...は異なる結果に要するに

+0

people.Where(X =>(x.CreateDate - dtMatch).TotalHours> 0)は通常働くあなたが見た2つのステートメントの違いは何ですか? – Teja

答えて

1

を与えているようだ:TotalHours


Math.Floor((x.CreateDate - dtMatch).TotalHours)に2文同等の変更を行うには、私がこれまで試したどのような

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

TotalHoursは10進数を返します。したがって、2つの日付の間に30分がある場合は、0.5が返されます。 .5が0より大きい場合、上記は真を返します。あなたが全時間を望むのであれば、TotalHoursの代わりにMath.Floor(TotalHours)に変更してください。これは、次に大きい整数に丸めます。


EntityFunctions.DiffHours - これは、時間の全体の数を表す整数を返し、それは30分であった場合。差が0の場合は結果になります。それが下にある場合dtMatchはCREATEDATEとケースの上にある場合

+2

時間を使用すると、常に24未満の時間コンポーネントのみが取得されます。これは悪い考えです! – Teja

+0

@Teja - 良い点、私を更新させてください。 – Igor

+0

@Teja - updated ... – Igor

1

おそらく、あなたはケースを考慮する必要があります。

people.Where(x => Math.Abs((x.CreateDate - dtMatch).TotalHours) > 0) 
関連する問題