У меня есть список расписаний, которые начинаются и заканчиваются в разные дни. Когда я ищу все расписания за неделю, я хочу перечислить все периоды времени, которые находятся в пределах диапазона этой недели, даже те, которые могут начинаться или заканчиваться на улице, но имеют один или несколько дней в течение недели, см. Пример изображения:Оптимизация расписания
чтобы разобраться в этом я сделал следующий код:
var weekStart = DateTime.Now().Date;
var weekEnd = weekStart.AddDays(6);
var thisWeek = schedules.Where(x =>
(x.ScheduleStartDate >= weekStart && x.ScheduleStartDate <= weekEnd && x.ScheduleEndDate <= weekEnd && x.ScheduleEndDate >= weekStart) ||
(x.ScheduleStartDate <= weekStart && x.ScheduleEndDate <= weekEnd && x.ScheduleEndDate >= weekStart) ||
(x.ScheduleStartDate >= weekStart && x.ScheduleStartDate <= weekEnd && x.ScheduleEndDate >= weekEnd) ||
(x.ScheduleStartDate <= weekStart && x.ScheduleEndDate >= weekEnd)
);
Этот код так что мой вопрос теперь работает нормально, если есть способ, чтобы оптимизировать его или просто сделать код выглядеть лучше?
Это плохое название. Пожалуйста, прочитайте http://meta.stackexchange.com/questions/10647/how-do-i-write-a-good-title –
Если это работает, тогда ваш вопрос может быть лучше размещен по адресу: http: //codereview.stackexchange .com /. Код выглядит хорошо для меня, вы использовали лямбда-выражения, поэтому код более читабельен, думаю, это все, что вы можете сделать. – jAC
Вы можете использовать Betweens, чтобы сократить ваш запрос. См. Http://stackoverflow.com/a/13470099/2231703 – HikeMike