Linq to SQL で null 許容 DateTime を順序付ける 質問する

Linq to SQL で null 許容 DateTime を順序付ける 質問する

私は現在取り組んでいるプロジェクトで 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

これはちょっとしたハックですが、Linq to SQL で動作するようです。

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

したがって、実際の「Create」値が null の場合、可能な最大の DateTime 値を代入します。これにより、すべての null 値が先頭に配置されます。

別の方法としては、日付フィールドに値があるかどうかで並べ替えるという方法があります。これも同様に機能します。

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

おすすめ記事