Хорошо, это довольно беспорядочный запрос, и у меня только ограниченный успех. У меня есть список класса Foo, который имеет свойство datetime и другие данные. У меня есть класс/строка почти каждую минуту, некоторые отсутствуют, а некоторые дни отсутствуют, например, праздники или выходные. Моя цель - группировать каждый день для всех строк от времени начала до времени окончания.
Так что в некоторые дни мое время начала может быть 9:30 утра и время окончания 15:00. Эту ситуацию я решаю следующим образом:
DateTime sd = new DateTime(2000, 1, 1, 9, 30, 0);
DateTime ed = new DateTime(2000, 1, 1, 15, 0, 0);
var z = Foos.Where(a=> a.FooDate.TimeOfDay >= sd.TimeOfDay &&
a.FooDate.TimeOfDay < ed.TimeOfDay)
.GroupBy(a=>a.FooDate.Date);
Это прекрасно работает. Моя проблема в том, что иногда у меня есть время начала 9 вечера и время окончания 6 утра. В этом случае я хочу, чтобы группа foos отправилась на ночь, и если 9 вечера в пятницу и нет строк до следующего понедельника, я хочу, чтобы группа охватила выходные. Я был бы даже рад предложению запроса, который всегда переходил бы на следующий день.
Я надеюсь, что это ясно и ценю любые идеи. Я пробовал много других способов сделать это с помощью циклов и создания другого списка разных дат и тому подобного, но я не доволен этим.