选择间隔中不存在的位置?四个日期不同
在第一个业务是汽车租赁系统。选择间隔中不存在的位置?四个日期不同
我想所有的汽车,其中有间隔由用户选择没有订单
public List<Car> SearchCar(DateTime pickdate, DateTime dropdate) {
var db = new CarRentalDBEntities();
var temp = new List<Car>();
temp = db.Cars.Where(item =>
!item.Orders.Any
(e => e.PickUpDateTime >= pickdate && dropdate <= e.DropDataTime)
).ToList();
return temp;
}
这是最后的代码,我写
- 错误是:汽车还自带如果为了与相交间隔用户选择
回答:
根据我的评论,你可能想要检查如果任何日期是在范围内或返回日期是在范围,或者如果租赁期限为比整个范围长:
e => (pickdate <= e.PickUpDateTime && e.PickUpDateTime < dropdate) || //picked up in period (pickdate <= e.DropDataTime && e.DropDataTime < dropdate) || //dropped off in period
(e.PickUpDateTime < pickdate && e.DropDataTime > dropdate) //rental spans period
注:错字在你的DropDat 一个时间
回答:
如果我明白你正在尝试做的,
我做了如下修改
我所用
All
的!Any
我找到代替它更容易阅读我把Db的语境在
using
声明,好的做法我直接返回的输出(不需要临时变量)
前提,据我了解它是返回所有的车没有,并订购
public List<Car> SearchCar(DateTime pickdate, DateTime dropdate) {
using (var db = new CarRentalDBEntities())
{
return db.Cars.Where(item => item.Orders.All(e =>
// where order pickup date is less Pick or greater than drop
(e.PickUpDateTime < pickdate || e.PickUpDateTime > dropdate) &&
// where order Drop date is less Pick or greater than drop
(e.DropDataTime < pickdate || e.DropDataTime > dropdate)))
.ToList();
}
}
回答:
也许你可以使用:
var temp = db.Cars.Where(item => item.Orders.All(e =>
e.DropDataTime <= pickdate
||
e.PickUpDateTime >= dropdate
)
).ToList();
对于所有现有的订单e
,他们要么及时完成订单,否则他们只需要在后面的车。
这里假设汽车上现有的所有订单e
都是“理智的”,因为它们的提货时间早于其下降时间。
以上是 选择间隔中不存在的位置?四个日期不同 的全部内容, 来源链接: utcz.com/qa/262072.html