按3个时间字段中的任意一个进行排序



如果可以的话,有两个问题。一条记录指定了1-3个Arrive、Depart和Pass字段。我希望结果按任何时间排序,无论它们来自哪个实际列。下面的查询按时间排序:首先是00:00到23:59,然后是00:00至23:50的出发时间,然后是从00:00到23-59的到达时间。换句话说,我得到了三个"块"的记录,而我想要这样的东西:

            Arr  Dep   Pass
1st result       00:01
2nd result 00:02
3rd result             00:03
4th result       23:58
5th result 23:59

等等。

问题的第二部分是这三个字段都可以为null,而我只需要DateTime的时间部分?领域日期部分未定义,可能是随机的。如果我取一个空字段的Value.TimeOfDay,那么我会得到一个AV。聚结操作员将在现场工作。价值,但它的故事领域。值而不是字段。Value.TimeOfDay,这是我需要的DateTime部分。

所以,你能帮我修复查询,使其在DateTime的非空时间部分排序吗?谢谢

查询部分:

        var results = from sl in db.WttScheduleLocations
                      orderby sl.Arrive.Value.TimeOfDay, sl.Depart.Value.TimeOfDay, sl.Pass.Value.TimeOfDay
                      select sl;

部分型号:

public class WttScheduleLocation
{
    public int Id { get; set; }
    public DateTime? Arrive { get; set; }
    public DateTime? Depart { get; set; }
    public DateTime? Pass { get; set; }
}

尝试此查询

var results = from sl in db.WttScheduleLocations
    orderby sl.Arrive.HasValue??sl.Arrive.Value.TimeOfDay descending
    orderby sl.Depart.HasValue??sl.Depart.Value.TimeOfDay descending
    orderby sl.Pass.HasValue??sl.Pass.Value.TimeOfDay descending
                      select sl;

相关内容

  • 没有找到相关文章

最新更新