获取提供的开始和结束日期范围内的日期
get dates in range of provided start and end dates
我在数据库中有开始和结束日期的记录
我想过滤掉所有在开始和结束日期范围内的记录
我有两个有效的查询,给我两个日期之间的记录,另一个查询给我在开始或结束日期范围内的记录
我如何将这两个 linq 查询组合成一个,以便它以两种方式工作
林克 1
schedulelist = (From c In db.Table1 Where c.StartDate.Value.Date <= objStartDate.Date And c.EndDate.Value.Date >= objStartDate.Date And
c.UserID = CInt(Session("UserID"))).ToList()
林克 2
schedulelist = (From c In db.Table1 Where (c.StartDate.Value.Date >=
objStartDate.Date And c.StartDate.Value.Date <= objEndDate.Date) Or
(c.EndDate.Value.Date >= objStartDate.Date And c.EndDate.Value.Date <=
objEndDate.Date) And c.UserID = CInt(Session("UserID"))).ToList()
在 db table 中有这些值
StartDate EndDate
2019-10-08 07:00:00.000 2019-10-30 07:00:00.000
2019-10-15 07:00:00.000 2019-10-27 07:00:00.000
如果使用 ObjStartDate 15/10/2019 00:00:00 和 ObjEndDate 27/10/2019 00:00:00
进行搜索
当我 运行 Linq 2
我得到第 2 条记录
当我 运行 Linq 1
时,我得到第 1 条记录
我应该得到的是任何 Linq 1 或 Linq 2 的记录
那么将两者结合到一个查询中的更好解决方案是什么,或者这个查询全错了?
检查日期范围 1 是否与日期范围 2 相交的最简单 查询 是这样的:
... WHERE range2_end > range1_start
AND range1_end > range2_start
这会检查所有情况,例如范围 1 完全在范围内、完全包含、在范围 2 内开始或在范围 2 内结束。
我在数据库中有开始和结束日期的记录 我想过滤掉所有在开始和结束日期范围内的记录
我有两个有效的查询,给我两个日期之间的记录,另一个查询给我在开始或结束日期范围内的记录
我如何将这两个 linq 查询组合成一个,以便它以两种方式工作
林克 1
schedulelist = (From c In db.Table1 Where c.StartDate.Value.Date <= objStartDate.Date And c.EndDate.Value.Date >= objStartDate.Date And
c.UserID = CInt(Session("UserID"))).ToList()
林克 2
schedulelist = (From c In db.Table1 Where (c.StartDate.Value.Date >=
objStartDate.Date And c.StartDate.Value.Date <= objEndDate.Date) Or
(c.EndDate.Value.Date >= objStartDate.Date And c.EndDate.Value.Date <=
objEndDate.Date) And c.UserID = CInt(Session("UserID"))).ToList()
在 db table 中有这些值
StartDate EndDate
2019-10-08 07:00:00.000 2019-10-30 07:00:00.000
2019-10-15 07:00:00.000 2019-10-27 07:00:00.000
如果使用 ObjStartDate 15/10/2019 00:00:00 和 ObjEndDate 27/10/2019 00:00:00
进行搜索当我 运行 Linq 2
我得到第 2 条记录当我 运行 Linq 1
时,我得到第 1 条记录我应该得到的是任何 Linq 1 或 Linq 2 的记录
那么将两者结合到一个查询中的更好解决方案是什么,或者这个查询全错了?
检查日期范围 1 是否与日期范围 2 相交的最简单 查询 是这样的:
... WHERE range2_end > range1_start
AND range1_end > range2_start
这会检查所有情况,例如范围 1 完全在范围内、完全包含、在范围 2 内开始或在范围 2 内结束。