选择间隔中不存在的位置?四个日期不同

在第一个业务是汽车租赁系统。选择间隔中不存在的位置?四个日期不同

我想所有的汽车,其中有间隔由用户选择没有订单

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

回到顶部