2013-06-19 43 views
-4

可以說事件發生在11點。我希望只有在事件發生在事件啓動前1小時到事件結束之間時才能顯示。謝謝你的幫助。在特定時間間隔內獲取數據

from x in _context.Events 
join a in _context.Addresses on x.EventAddressID equals a.ID 
let aboutToStart = x.EventStartTime.AddHours(-1) 
let currentTime = DateTime.Now 
where x.EventStartTime >= aboutToStart && x.EventEndtime >= currentTime 
+0

那麼您的問題是什麼?您的查詢是否有效?如果不是,它對於一些樣本輸入有什麼作用,它應該返回什麼?它不會編譯,還是錯誤,或什麼? – Servy

+0

查詢需要多小心?例如,您是否必須考慮夏令時?在添加/減少時間之前,您可能需要轉換爲UTC – Alan

+0

對不起,我沒有提供,但沒有它沒有返回正確的信息。我認爲我的where子句關閉 – user516883

回答

1

你不能用.AddHours(-1)呼叫服務器上創建新DateTime對象。相反,您應該使用EntityFunctions.AddHours方法來計算服務器上的日期時間:

var currentTime = DateTime.Now; 
var query = from x in _context.Events 
      join a in _context.Addresses on x.EventAddressID equals a.ID 
      let aboutToStart = EntityFunctions.AddHours(x.EventStartTime, -1) 
      where x.EventStartTime >= aboutToStart && 
        x.EventEndtime >= currentTime; 
+0

從來沒有使用過這個,你能不能提供一個例子,我的子句會得到我需要的結果嗎? – user516883

+0

@ user516883肯定,用示例更新 –

+0

@ user516883這是否解決了您的問題? –