c#timespan two dates linq

时间:2016-08-31 10:08:41

标签: c# entity-framework linq

我有这张桌子

            Starting Time Ending Time Charges
1   True    09:00:00    17:00:00    500.00  
2   True    17:01:00    18:00:00    1000.00 
3   True    18:01:00    08:59:00    2000.00 

基本上,上表是根据时间确定将在交货单上打印的费用。如果有人在下午4点到窗口收集交货单,则费用为500.如果他来之后下午6点,收费将是2000。

之前它的工作正常,因为最后的结束时间是晚上11:59。但也有一些2:am的情况报告,所以我必须将最后一次更改为上午8:59。现在事情没有用了

当上次结束时间从晚上11:59更改为上午8:59时,我无法使此查询在上述方案中有效。 ts是当前时间,即system.datetime.now

 db.JobDoDeliveryTimeSlots.FirstOrDefault(m => ts >= m.StartingTime && ts <= m.EndingTime && m.isOrginal == false);

2 个答案:

答案 0 :(得分:1)

如果您只想处理日期翻转,请使用以下内容:

access_token

答案 1 :(得分:1)

如果结束时间大于开始时间,那么你假设它是第二天吗?如果是这样,那么也许尝试这样的事情,如果它少于开始时间,我会在结束时间添加一天:

db.JobDoDeliveryTimeSlots.FirstOrDefault(m => ts >= m.StartingTime && ts <= ((m.EndingTime >= m.StartingTime) ? m.EndingTime : m.EndingTime.AddDays(1)) && m.isOrginal == false);