Как вы можете объединить datetimeoffset в Linq для SQL? - PullRequest
2 голосов
/ 09 октября 2009

У меня есть запрос Linq, который упорядочивает по datetimeoffest. Цель состоит в том, чтобы на верхнем месте был тот, который имеет значение 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

Проблема в том, что максимальное значение datetimeoffset не одинаково для SQL и C #. Я чувствую, что упускаю очевидное простое решение.

Любой ввод?

Ответы [ 2 ]

2 голосов
/ 10 октября 2009

Вы пробовали оператор объединения C #?

orderby (item.Date ?? DateTimeOffset.MaxValue) descending
0 голосов
/ 09 октября 2009

При использовании datetime я заметил, что вы не можете использовать DateTime.Max и передавать его в SQL. Кажется, что максимальная дата и время в SQL ниже, чем в C #. Я предположил, что то же самое применяется в DateTimeOffset. Это не похоже на правду. Казалось бы, этот код работает.

orderby (item.Date.HasValue ? item.Date : DateTimeOffset.MaxValue) descending
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...