2017-02-09 17 views
0

私のプロジェクトでは、.NETCoreとEF Coreを使用しています。 DateTimesを使用して式で項目を照会することができません。EFでのDateTimeの比較Linqクエリ

return _context.table 
     .Where(x=> x.CPULoad > 90 && X.Date >= DateTime.Now.AddMinutes(-5)); 

CPULoadは完璧に動作しますが、datetimeの比較結果は以下のように出力されます。

The LINQ expression '(([x].Date >= DateTime.Now.AddMinutes(-5))' could not be translated and will be evaluated locally. 

誰かが間違っていることを説明できますか?前もって感謝します!

答えて

5

var compareDate = DateTime.Now.AddMinutes(-5); 
return _context.table 
    .Where(x=> x.CPULoad > 90 && X.Date >= compareDate); 

基本的にここでの問題は、エンティティフレームワークは、SQLにDateTime.Now.AddMinutes(-5)を変換する方法を知らないので、あなたが値を取得し、エンティティフレームワークにそれを渡す必要がある...これを試してみてください。

+0

ありがとうございました!私はもっ​​と近づいていると思う...私は今、私の出力でクエリを参照してくださいが、私の結果はまだ "すべて"です。私の出力で私はこれを参照してください '' ' 実行されたDbCommand [パラメータ= [@__ date_0 = '?'] .......] SELECT [x]/[id]、 [x] ... FROM ... [x]。日付> = @ __ date_0 AND ... '' ' –

+0

ここで何が起こっているのか分かりにくいです...モデル'table'のように見えますか?生成されたEFクエリをSSMSで直接実行し、そこから試してみることもできます。 –

+0

モデルには、 'DateTime'のタイプである 'Date'というプロパティがあります。私はそれらが一致していることを確認しようとしました。 –