【问题标题】:Ordering in Linq to Entities Multiple Columns在 Linq 中对实体多列进行排序
【发布时间】:2012-12-06 14:34:31
【问题描述】:

我在 SQL Server 中有一个包含以下列的表

  • ID(身份/主键)
  • DestinationID(外键)
  • 日期(日期字段)
  • 时间(时间场)
  • DayOfWeek(Char(3) 字段)即“MON”、“TUE”等。

我想按日期和时间排序数据,然后按 DayOfWeek 和时间排序。因此,所有带日期的记录都显示在顶部,并按时间排序,然后是 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);

【问题讨论】:

标签: c# entity-framework linq-to-entities


【解决方案1】:

如果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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-07
    相关资源
    最近更新 更多