Вопрос по datetime, c#, linq-to-sql – Упорядочение обнуляемого DateTime в Linq to SQL

23

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

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

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

Ваш Ответ

1   ответ
49

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

Поэтому я заменяю максимально возможное значение DateTime, когда фактическое & quot; Создать & quot; значение равно нулю. Это поместит все нулевые значения в верхнюю часть.

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

return from ju in context.Job_Users_Assigned
          where ju.UserID == user.ID
          orderby ju.Created.HasValue descending
          orderby ju.Created descending;
Если снова взглянуть на вопрос, то это немного двусмысленно относительно того, хочет ли запрашивающий сначала нулевые значения или нет (он говорит, что не хочет, но затем приказывает запросу по убыванию). В любом случае это небольшой шаг от любого из этих фрагментов кода к тому, что он хочет.
Спасибо Мэтт, это именно то, что я искал. и что касается порядка, это был только пример, я должен упорядочить его другими способами в разных местах, но нулевые значения всегда последние. dkarzon
Я не могу понять, почему именно, но я нахожу ваше второе решение довольно красивым

Похожие вопросы