У меня есть класс, представляющий смену, на которую может работать сотрудник:
public class Shift {
public int Id { get; set;}
public DateTime Start {get;set;}
public DateTime End { get; set;}
public DayOfWeek Day { get; set;}
}
И, скажем, у меня есть список этих смен для одного сотрудника:
List<Shift> myShifts;
Я знаю, что могу сгруппировать смены по дням с помощью следующего оператора linq:
var shiftsByDay = from a in myShift
group a by a.Day;
Мой вопрос: Как каждый день получить все смены, которые перекрываются, в отдельных группах без двойного счета?
Перекрывающийся сдвиг - это тот, в котором время начала или окончания перекрывается с другим временем начала или окончания смены.
Я бы хотел сделать это с linq, если это вообще возможно.