C# 日期范围内的日期时间

C# 日期范围内的日期时间,c#,datetime,C#,Datetime,我知道像这样的问题已经被问过一百次了,但他们的答案对我来说并不适用。这是我的 我有一个对象(称之为ObjectA),它的起始日期是DateTime,结束日期是DateTime。我还有另一组对象(List(ObjectB))(不同于ObjectA),它们的日期时间范围有一个开始和结束。我正在查找列表(ObjectB)中日期范围与ObjectA范围重叠的所有对象。让我们看看我能对一个例子做些什么 ObjectA.StartTime='7/31/2015 00:00:00' ObjectA.EndTi

我知道像这样的问题已经被问过一百次了,但他们的答案对我来说并不适用。这是我的

我有一个对象(称之为ObjectA),它的起始日期是
DateTime
,结束日期是
DateTime
。我还有另一组对象(
List(ObjectB)
)(不同于ObjectA),它们的日期时间范围有一个开始和结束。我正在查找
列表(ObjectB)
中日期范围与ObjectA范围重叠的所有对象。让我们看看我能对一个例子做些什么

ObjectA.StartTime='7/31/2015 00:00:00'
ObjectA.EndTime='8/2/2015 00:00:00'

列表(对象B)
B1.StartTime='7/1/2015 00:00:00'
B1.EndTime='8/1/2015 00:00:00'

B2.StartTime='7/1/2015 00:00:00'
B2.EndTime='7/1/2016 23:59:59'

B3.StartTime='8/1/2015 13:00:00'
B3.EndTime='8/15/2015 23:59:59'

myList = myList.Where(x => x.StartDate < ObjectA.StartDate && x.EndDate > ObjectA.EndDate).ToList();
现在,我的列表应该包括B2和B3,因为它们都与我的ObjectA时间重叠。但是,它不应包括B1,因为B1的时间在其他时间开始之前结束

我当前的代码如下…

myList = myList.Where(x => x.StartDate < ObjectA.StartDate && x.EndDate > ObjectA.EndDate).ToList();
myList=myList.Where(x=>x.StartDateObjectA.EndDate).ToList();
我将在列表中返回所有3个ObjectB。我已经改变了一百种不同的方式,但我没有得到我所期望的

这让我快发疯了。任何帮助都将不胜感激

myList=myList.Where(x=>x.StartDateObjectA.StartDate.ToList();
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。

“我知道类似的问题已经被问了一百次,但他们的答案对我来说不起作用。”-然后通过链接列出其他问题及其答案,并解释哪些问题不适合您。否则,我预计您会收到很多建议来研究某些其他问题(您可能已经读过!),因为我们看不出它们如何不适合您的情况。您只需使用ObjectA的EndDate,即对于ObjectB列表中的每个对象,其StartDate应小于ObjectA的EndDate,以及ObjectB的EndDate>ObjectA的EndDate。这个声明将给出B2,B3。不是B1。myList=myList.Where(x=>x.StartDateObjectA.EndDate).ToList()@Muhammadidres认为,解决方案将只捕获在ObjectA之前或期间开始并在之后结束的ObjectB。它将在ObjectB上失败,而ObjectB与ObjectA同时发生,但在ObjectA之前结束。这是根据您的要求进行的。“我的列表应该包括B2和B3,因为它们都重叠了我的ObjectA时间。但是,它不应该包括B1”可能希望删除
=
部分,因为当
ObjectA
开始时结束的事件可能不会被认为重叠。@juharr是的。我很抱歉,对象B1中有一个输入错误,可能澄清了我的问题。结束日期应为“08/01/2015 00:00:00”。让我最痛苦的对象是在我的ObjectA开始的同时结束的对象,它不应该包括在我的计算中。不幸的是,我的解决方案要求我们时刻保持时间敏感性。我最终在另一个图书馆找到了一个解决方案,它就像一个冠军。