Упорядочение обнуляемого DateTime в Linq to SQL - PullRequest
23 голосов
/ 10 июля 2009

Я начал использовать Linq to SQL для проекта, над которым я сейчас работаю, и столкнулся с проблемой при упорядочении по полю DateTime, но, поскольку DateTime допускает значения NULL, значения NULL оказываются меньше фактических дат. 1001 *

Так что я очень хочу, чтобы те с датой были вверху (упорядочены в любом случае), а потом все без даты.

jobList = from ju in context.Job_Users_Assigned
          where ju.UserID == user.ID
          select ju.Job;
return jobList.OrderByDescending(j => j.EndDate);

1 Ответ

50 голосов
/ 10 июля 2009

Это что-то вроде хака, но похоже, что он работает с Linq to SQL:

return from ju in context.Job_Users_Assigned
          where ju.UserID == user.ID
          orderby ju.Created ?? DateTime.MaxValue descending;

Итак, я подставляю максимально возможное значение DateTime, когда фактическое значение «Create» равно нулю. Это поместит все нулевые значения в верхнюю часть.

Другой подход состоит в том, чтобы упорядочить по тому, имеет ли поле даты значение. Это тоже работает:

return from ju in context.Job_Users_Assigned
          where ju.UserID == user.ID
          orderby ju.Created.HasValue descending
          orderby ju.Created descending;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...