Как можно в
linq2db сообразить что-то подобное этому?
group by case
when x < 10 then 'b10'
when x between 10 and 20 then 'b10_20'
when x > 20 then 'a20'
end
В моем конкретном случае нужно сгруппировать строки по возрастным интервалам, как это сделать тут — не нашел.
Как вариант, можно сделать так:
[Sql.Expression("case when {0} < 10 then 1 when {0} > 10 then 2 end", ServerSideOnly = true)]
public static double Intervals(object x)
{
throw new InvalidOperationException();
}
var query = from u in db.Test
group u by Intervals(Sql.DateDiff(Sql.DateParts.Year, u.DOB, DateTime.Now).Value)
into gr
select new {key = gr.Key, value = gr.Count()};
Но это достаточно неудобно (особенно для большого числа интервалов), да и sql генерируется не тот, который хочется.