2009-07-10 50 views
21

我已經開始使用Linq to SQL來處理一個im工作的項目,並且在通過DateTime字段排序時遇到了問題,但由於DateTime允許空值小於那裏的實際日期。在Linq to SQL中訂購可以爲空的DateTime

所以我非常希望有一個日期在頂部(有序的方式),然後所有沒有日期設置的人。

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

回答

45

這是一個黑客位的,但它似乎與LINQ到工作到SQL:

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

所以我代最大可能的日期時間值,當實際的「創建」值空值。這將把所有的空值放在最上面。

另一種方法是按日期字段是否有值進行排序。這工作太:

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

我不能把我的手指上到底爲什麼,但我覺得你的第二個解決方案相當漂亮 – 2009-07-10 05:44:50