我感冒得很厉害,不能一辈子都动脑筋去解决这个问题!
jobStops.Where(jobStop => jobStop.TrailerId == trailer.TrailerId &&
(jobStop.IsDelivery == true &&
jobStop.JobStopDateTime.Value.Date.CompareTo(date.AddDays(x).Date) >= 0) &&
(jobStop.IsDelivery == false &&
jobStop.JobStopDateTime.Value.Date.CompareTo(date.AddDays(x).Date) <= 0))
很明显,我知道我们无法知道列的真假位置,因为那是不可能的,但是我所需要的是两次读取where语句以筛选自身的条件。
所以上面的查询基本上是说,从数据库中获取将来要交付的拖车行以及过去收集的拖车行,所以我知道当时的拖车。
(jobStop.IsDelivery == true &&
jobStop.JobStopDateTime.Value.Date.CompareTo(date.AddDays(x).Date) >= 0)
这处理了将来要交付的物品
(jobStop.IsDelivery == false &&
jobStop.JobStopDateTime.Value.Date.CompareTo(date.AddDays(x).Date) <= 0)
这最终是为了过滤掉上述where子句的结果,使其仅显示已收集的项目。
我知道这可能真的很容易,但是该项目应该在昨天完成,而我只是无法忍受这种令人发指的寒冷。
答案 0 :(得分:0)
您可以使用工作ID来完成
jobStops.Where(jobStop => ((jobStop.TrailerId == trailer.TrailerId && jobStop.JobId ==trailer.JobId)&& (
(jobStop.IsDelivery == true && jobStop.JobStopDateTime.Value.Date.CompareTo(date.AddDays(x).Date) >= 0) ||
(jobStop.IsDelivery == false && jobStop.JobStopDateTime.Value.Date.CompareTo(date.AddDays(x).Date) <= 0))))