[linq2db] Группировка по интервалу
От: fatkh  
Дата: 29.06.15 16:25
Оценка:
Как можно в 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 генерируется не тот, который хочется.
group by linq2db
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.