如何将Linq中的datetimeoffset合并到SQL?

时间:2009-10-09 13:01:41

标签: c# .net linq linq-to-sql

我有一个按datetimeoffest排序的Linq查询。目标是在顶部有一个NULL,然后是最近的,最近的第二个,依此类推。我从这开始。

orderby item.Date descending

这样做,NULL会到达底部。所以我改成了它。

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

这里的问题是SQL和C#之间的最大datetimeoffset不一样。我觉得我错过了一个明显的简单解决方案。

任何输入?

2 个答案:

答案 0 :(得分:2)

您是否尝试过C#的合并运算符?

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

答案 1 :(得分:0)

使用datetime时,我注意到你无法使用DateTime.Max并将其传递给SQL。似乎SQL中的最大日期时间低于C#。我假设在DateTimeOffset中应用了相同的内容。这似乎不是真的。看起来这个代码可以工作。

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