如果可以的话,有两个问题。一条记录指定了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;