2009-07-10 9 views
21

私は、作業中のプロジェクトでLinqをSQLに使用し始めました.DateTimeフィールドで注文すると問題に遭遇しましたが、DateTimeはnullを許可するので、nullsは実際の日付はそこにあります。LinqからSQLへnullable 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 to SQLはで動作するように表示されます。実際の「作成」値があるとき

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

は、だから私は、可能な最大DateTime値を代入していますヌル。これはすべてのヌル値を最上位に置きます。

もう1つの方法は、日付フィールドに値があるかどうかによって注文することです。これはあまりにも動作します:

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

私はなぜ正確に私の指を置くことができないんだけど、私は –

+0

は再び質問を見てみると、あなたの第二の溶液は非常に美しい見つけ、それは少し曖昧だアスカーがnullを望んでいるかどうかの最初に値を入力するかどうかを指定します(入力しませんが、クエリの降順を指定します)。いずれにしても、これらのコードスニペットのいずれかから彼が望むものへの小さなステップです。 –

+0

おかげで、私が探していたものがまさにマットです。これは単なる例に過ぎませんが、別の場所で別の方法で注文する必要がありますが、null値は常に最後です。 – dkarzon

関連する問題