首页 新闻 会员 周边

efcore中,如何实现双向的两个时间范围搜索(时间范围交集查询)

0
悬赏园豆:5 [已解决问题] 解决于 2022-12-13 00:46

  Model类:

public class Orders{
     public DateTime? Start{get;set;}
     public DateTime? End{get;set;}  
}

 

现在 查询时, 接收前端传来的  start和end两个时间,如何查询 orders中的两个时间包含在前端传来的两个时间内?

如果把这个做成扩展方法,Expression表达式该如何体现 ?

 

尾随前行的主页 尾随前行 | 初学一级 | 园豆:0
提问于:2022-12-07 01:13
< >
分享
最佳答案
0

var query = records.Where(record =>
(record.StartTime >= startTime && record.EndTime <= endTime) ||
(startTime >= record.StartTime && endTime <= record.EndTime)
);

收获园豆:5
a1010 | 菜鸟二级 |园豆:301 | 2022-12-08 13:53
其他回答(2)
0

where(a=> a.time>=Start && a.time<=End)

diudiu1 | 园豆:1031 (小虾三级) | 2022-12-07 10:04

数据表中的时间字段也是两个,start和end

支持(0) 反对(0) 尾随前行 | 园豆:0 (初学一级) | 2022-12-07 20:05

感谢回答

支持(0) 反对(0) 尾随前行 | 园豆:0 (初学一级) | 2022-12-07 20:09
0
dbContext.Set<T>.Where(x =>  EF.Functions.DateDiffDay(x.CreateTime, startTime) <= 0 &&  EF.Functions.DateDiffDay(x.CreateTime, endTime) >= 0)
--sqlserver
select * from Tabel1 x 
where DateDiff( DAY, x.CreateTime, @startTime) <= 0 and  DateDiff( DAY, x.CreateTime, @endTime) >=0;

--mysql
select * from Tabel1 x 
where TIMESTAMPDIFF( DAY, x.CreateTime, @startTime) <= 0 and  TIMESTAMPDIFF( DAY, x.CreateTime, @endTime) >=0;

EF.Functions.DateDiffYear()
EF.Functions.DateDiffMonth()
EF.Functions.DateDiffDay()
EF.Functions.DateDiffHour() 小时
EF.Functions.DateDiffMinute() 分钟
EF.Functions.DateDiffSecond()
EF.Functions.DateDiffMicrosecond() 毫秒

jzblive | 园豆:428 (菜鸟二级) | 2022-12-07 10:52

大佬,我是两个两段时间范围内取交集哦。 数据表中寸的有两个字段,一个开始时间一个结束时间的。前台再传一个时间范围过来筛选的

支持(0) 反对(0) 尾随前行 | 园豆:0 (初学一级) | 2022-12-07 20:09

感谢回答

支持(0) 反对(0) 尾随前行 | 园豆:0 (初学一级) | 2022-12-07 20:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册