【发布时间】:2019-01-19 08:55:19
【问题描述】:
我得了臭感冒,我这辈子都无法动脑筋来解决这个问题!
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 列是 true 还是 false,因为这是不可能的,但我想要的是 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 子句的结果,以便它只显示已收集的项目。
我知道这可能真的很容易,但该项目昨天就要完成了,我实在是受不了这可怕的寒冷。
【问题讨论】:
-
你在哪里使用(jobStop.TrailerId == trailer.TrailerId),这只会得到一行......因此jobStop.IsDelivery是真或假......所以你必须使用(| |) 而不是 (&&) 在第二个过滤器中
-
您可以使用
>和<代替CompareTo。我认为这是 EF 核心?
标签: c# sql-server entity-framework tsql lambda