Я хотел бы сгруппировать свой запрос по-разному на основе int, переданного в мою функцию. В настоящее время у меня есть это очень Hacky решение:Динамическая группировка по дням/неделям/месяцам/годам в Runtime
`.GroupBy(occurrence => new { date =
// Bucket by day.
timeBucket == 0 ? DbFunctions.TruncateTime(occurrence.occurrenceDate) :
// Bucket by week.
timeBucket == 1 ? DbFunctions.AddDays(DbFunctions.CreateDateTime(occurrence.occurrenceDate.Year, 1, 1, 0, 0, 0), 7*(occurrence.occurrenceDate.DayOfYear/7)) :
// Bucket by month.
timeBucket == 2 ? DbFunctions.TruncateTime(DbFunctions.CreateDateTime(occurrence.occurrenceDate.Year, occurrence.occurrenceDate.Month, 1, 1, 1, 1)) :
// Bucket by year.
DbFunctions.TruncateTime(DbFunctions.CreateDateTime(occurrence.occurrenceDate.Year, 1, 1, 1, 1, 1)),
type = occurrence.type })`
Специфика того, как рассчитать даты не слишком важно для меня (но не стесняйтесь оказать помощь в любом случае). Я бы хотел, чтобы вам не пришлось проходить этот оператор case для каждой строки в базе данных. Есть ли вообще избежать этого? Я пробовал различные решения, такие как использование выражения, но я не мог вернуть объект, который мне нужен, потому что дерево выражений должно быть без параметров ...
Если у кого-то есть решение, было бы очень признательно.
Спасибо!
Это сработало! Благодаря тонну! –