我想知道是否有可能在Linq查詢中轉換DateTime對象的時區。例如如何在Linq中將DateTime對象轉換爲本地/ UTC時區?
var seats = await _seat.GetAll()
.Where(
DbFunctions.AddHours(x.StartTime, -1) >= x.CreationTime.ToUniversalTime());
在上面的代碼,x.StartTime是在UTC時區而x.Creation時間是在本地時區。如果我在x.CreationTime上致電ToUniversalTime()我收到一個異常。 是否可以在Linq查詢中進行轉換? 我知道可以在查詢之前提取CreationTime並將其轉換,但知道將其轉換爲Linq隊列中的可能性會很好。
你會得到什麼例外? '_seat.GetAll()'從數據庫中拉出來嗎? –
代碼中出現'DbFunctions'表示您正在使用實體框架。真的嗎?您的問題的答案將特定於將LINQ查詢轉換爲SQL的LINQ提供程序。 –
有幾個問題:1)這個實體框架? 2)這是SQL Server還是其他? (以及哪個版本?)3)數據庫中的「StartTime」和「CreationTime」是什麼類型的字段? 4)*爲什麼*你在'CreationTime'字段中存儲當地時間? 5)*當地時間是誰 - 用戶的?一個Web服務器的?數據庫服務器的? 6)你確實意識到你的查詢是[non-sargable](https://en.wikipedia.org/wiki/Sargable),對不對? –