日期范围内的DateTime
本文关键字:DateTime 范围内 日期 | 更新日期: 2023-09-27 18:11:55
我知道这样的问题已经被问了一百次了,但他们的答案对我不起作用。
我有一个对象(称之为ObjectA(,它的起点为DateTime
,终点为DateTime
。我有另一个对象集合(List(ObjectB)
((不同于ObjectA(,它们具有带开始和结束的DateTime范围。我正在查找List(ObjectB)
中日期范围与ObjectA范围重叠的所有对象。让我们看看我能对一个例子做些什么。。。
ObjectA.StartTime='2015年7月31日00:00:00'
ObjectA.EndTime='8/2/2015 00:00:00'
列表(ObjectB(
B1.StartTime='2015年7月1日00:00:00'
B1.EndTime="2015年8月1日00:00:00">
B2.StartTime='2015年7月1日00:00:00'
B2.EndTime='2016年7月1日23:59:59'
B3.开始时间='8/1/2015 13:00:00'
B3.结束时间='8/15/2015 23:59:59'
现在,我的列表应该包括B2和B3,因为它们都与我的ObjectA时间重叠。但是,它不应该包括B1,因为B1的时间在另一个时间开始之前结束。
我当前的代码如下
myList = myList.Where(x => x.StartDate < ObjectA.StartDate && x.EndDate > ObjectA.EndDate).ToList();
我正在获取列表中返回的所有3个ObjectB。我已经用一百种不同的方式改变了这一点,但我并没有得到我所期望的。
这把我逼疯了。任何帮助都将不胜感激!
myList = myList.Where(x => x.StartDate < ObjectA.EndDate && x.EndDate > ObjectA.StartDate).ToList();
在ObjectA
结束之前已经开始的所有对象,以及在它开始之前尚未结束的所有对象。
您最初编写的代码只捕获开始和结束日期完全包含ObjectA
持续时间的对象。
我很困惑为什么您不希望代码返回B1
。它从07-01开始到08-01结束,而ObjectA从07-31开始到08-02结束,这意味着它们的日期范围将从07-31到08-01重叠。