Я знаю, что что-то подобное было задано сто раз, но их ответы не работают для меня. Вот что у меня есть.DateTime в диапазоне дат
У меня есть объект (назовите его ObjectA) с запуском DateTime
и конец DateTime
. У меня есть еще одна коллекция объектов (List(ObjectB)
) (отличная от ObjectA), у которых есть диапазоны DateTime с начала и конца. Я ищу все объекты из List(ObjectB)
, диапазон дат которых перекрывает диапазон ObjectA. Давайте посмотрим, что я могу сделать с примером ...
ObjectA.StartTime = '7/31/2015 00:00:00'
ObjectA.EndTime = '8/2/2015 00:00:00'
Список (ObjectB)
B1.StartTime = '7/1/2015 00:00:00'
B1.EndTime = '8/1/2015 00:00:00'
B2.StartTime = '07/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'
Теперь мой список ДОЛЖЕН включать B2 и B3, поскольку оба они перекрывают мои объекты ObjectA. Однако он не должен включать B1, поскольку время B1 заканчивается до начала другого запуска.
Мой текущий код выглядит следующим образом ...
myList = myList.Where(x => x.StartDate < ObjectA.StartDate && x.EndDate > ObjectA.EndDate).ToList();
Я получаю все 3 ObjectBs вернулся в списке. Я изменил это на сто разных способов, и я не понимаю, чего я ожидаю.
Это сводит меня с ума. Любая помощь будет оценена!
http://stackoverflow.com/questions/13513932/algorithm-to-detect-overlapping-periods – ken2k
«Я знаю, что что-то подобное было задано сто раз, но их ответы не работают для меня». - затем перечислите другие вопросы и их ответ, связавшись с ними и объясните, что не работает для вас, пожалуйста. В противном случае я предсказываю, что вы получите много предложений, чтобы посмотреть на некоторые другие вопросы (которые вы, возможно, уже читали!), Потому что мы не видим, как они не подходят в вашем случае. –
Вам нужно только играть с EndDate объекта ObjectA, то есть для объекта foreach в списке ObjectB, его StartDate должен быть меньше, чем EndDate объекта ObjectA, а также EndDate объекта ObjectB> EndDate ObjecA. это заявление даст вам B2, B3. НЕ В1. myList = myList.Where (x => x.StartDate ObjectA.EndDate) .ToList(); –