使用Linq to Entities,我試圖查詢日誌表以在匹配行附近查找行。我無法在查詢中添加日期。這是我迄今爲止所擁有的。在Linq中添加日期到實體
from
l in objectSet.Logs
let
match = objectSet.Logs.Where(whatever).FirstOrDefault()
where
l.Timestamp > (match.Timestamp - twoHours)
&& l.Timestamp < (match.Timestamp + twoHours)
select
l
離開了「無所謂」條件是找到我感興趣的行,「twoHours」已經被可變的時間跨度,一個.AddHours()
功能等。我還沒找到EF可以生成將字段值(match.Timestamp)的值添加到常量的SQL的正確方法。
顯而易見的解決方案是首先執行「匹配」查詢,然後在第二個查詢中使用字面值,但我已將代碼示例簡化爲主要問題(在查詢中添加日期)我的查詢更復雜,這不會是理想的。
乾杯
我有過類似的問題,不推薦使用。問題是.AddHours()沒有SQL等價物,因此Linq無法將其轉換爲SQL表達式。我通過調用.ToList()來調用延遲執行來克服這個問題,然後在內存集合上應用.AddHours()過濾器。 – dotariel 2010-11-03 14:56:52
@ XSaint32,這是雙重錯誤。 *有* [一個(T)SQL等價物,](http://msdn.microsoft.com/en-us/library/ms186819.aspx),您可以*從EF調用它。 – 2010-11-03 16:50:29
@克雷格 - 感謝您的意見。我沒有意識到這一點。 – dotariel 2010-11-03 17:48:23