在Linq to SQL中排序可为空的DateTime

时间:2009-07-10 04:58:27

标签: c# linq-to-sql datetime

我已经开始使用Linq to SQL来处理正在进行的项目,并且我在使用DateTime字段进行排序时遇到了问题,但由于DateTime允许空值,因此空值将小于其中的实际日期。 / p>

所以我非常想要那些有日期的人(按照任何一种方式排序),然后是所有没有设定日期的人。

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

1 个答案:

答案 0 :(得分:49)

这有点像黑客,但它似乎与Linq一起使用SQL:

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

所以当实际的“Create”值为null时,我将替换最大可能的DateTime值。这将把所有空值放在最上面。

另一种方法是根据日期字段是否具有值来排序。这也有效:

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