我有一个按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不一样。我觉得我错过了一个明显的简单解决方案。
任何输入?
答案 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