2009-10-09 24 views
2

我有一個由datetimeoffest命令的Linq查詢。目標是讓頂部爲NULL,接着是最近的,最近的第二個,等等。我從這開始。如何將Linq中的datetimeoffset合併到SQL?

orderby item.Date descending 

以這種方式做到這一點,NULLs到底部。所以我改變了這一點。

orderby (item.Date.HasValue ? item.Date.Value.Ticks : long.MaxValue) descending 

這適用於內存查詢,但不能轉換爲SQL。我最近的嘗試是這樣的。

orderby (item.Date.HasValue ? item.Date : new DateTimeOffset(new DateTime(9999, 09, 31))) descending 

這裏的問題是max和datetimetimeset在SQL和C#之間是不一樣的。我覺得我缺少一個明顯簡單的解決方案。

任何輸入?

回答

0

當使用日期時間我注意到你不能使用DateTime.Max並將其傳遞給SQL。似乎SQL中的最大日期時間低於C#。我假設在DateTimeOffset中應用了相同的方法。這似乎不是真的。它會出現這個代碼的作品。

orderby (item.Date.HasValue ? item.Date : DateTimeOffset.MaxValue) descending 
2

您是否嘗試過C#的合併操作符?

orderby (item.Date ?? DateTimeOffset.MaxValue) descending 
+0

是啊,我敢肯定它不工作,我想你可以做的OrderBy(item.Value?DateTimeOffset.MaxValue)下降,它並沒有真正返回DATETIMEOFFSET,它返回System.Nullable 2009-10-12 15:57:40

相關問題