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