我在SQL Server中有一个包含以下列的表
我想按日期和时间排序数据,然后按DayOfWeek和Time排序。因此,所有带日期的记录都显示在顶部,按时间排序,然后是按时间排序的DayOfWeek。
我尝试了几种方法,但是我无法理解它,我有以下代码
var qry = ctx.DestinationTimings.Where(x => x.DestinationID == this.ID)
.OrderBy(t => t.Date).ThenBy(t => t.Date != null)
.ThenBy(t => SqlFunctions.CharIndex(t.DayOfWeek + ",", "MON,TUE,WED,THU,FRI,SAT,SUN"))
.ThenBy(t => t.Time);
答案 0 :(得分:15)
如果Date
可以为空,你可以这样做:
var qry = ctx.DestinationTimings.Where(x => x.DestinationID == this.ID)
.OrderBy(t => t.Date ?? DateTime.MaxValue)
.ThenBy(t => SqlFunctions.CharIndex(t.DayOfWeek + ",", "MON,TUE,WED,THU,FRI,SAT,SUN"))
.ThenBy(t => t.Time);