7

次の列を持つ SQL Server のテーブルがあります。

  • ID (ID/主キー)
  • DestinationID (外部キー)
  • 日付 (日付フィールド)
  • 時間 (時間フィールド)
  • DayOfWeek (Char(3) フィールド) 例: "MON"、"TUE" など。

Date と Time でデータを並べ替え、次に 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);
4

1 に答える 1

22

nullable の場合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);
于 2012-12-06T14:49:03.280 に答える