Это интересная проблема сортировки, так как вам нужно учитывать дату начала и окончания каждого элемента. Если вы использовали простой алгоритм сортировки, то вы могли бы сортировать либо по дате начала, либо по дате окончания, но сортировка по обоим не будет очень эффективной, поскольку элемент с ранней датой начала может иметь очень позднюю дату окончания или элемент с более поздней датой начала может быть более ранняя дата окончания, а это означает, что вы не можете предварительно отсортировать этот список на основе критериев «активен ли какой-либо из этих элементов прямо сейчас?»
Если вы ищете сверхэффективный механизм для этого, у меня, возможно, не будет ответа для вас, но если вы просто ищете что-то простое в использовании существующих структур данных C #, я бы подумал о создании два отсортированных списка, один отсортирован по дате начала, а другой отсортирован по дате окончания. Выполните поиск в списке, отсортированном по дате начала, для элементов, которые начинаются раньше, и найдите в списке, отсортированном по дате окончания, элементы, которые заканчиваются прямо сейчас. Пересечь эти результаты, чтобы получить окончательный ответ.
Как я уже говорил, я уверен, что есть более эффективный механизм для этого, но если бы я хотел сделать его простым и просто использовать то, что у меня было, я бы подумал сделать это.