2014-09-08 3 views
1

мне нужна помощь, чтобы перевести выписку из LINQ к SQLВоплощение С ROLLUP SQL заявление в LINQ

SQL

SELECT MONTH(ind_receita.lad_ins_date) as 'Month', SUM(ind_receita.valor) as Monthly_Value 
FROM ind_receita 
WHERE YEAR(ind_receita.lad_ins_date) = 2014 
GROUP BY MONTH(ind_receita.lad_ins_date) 
WITH ROLLUP 

Я знаю, как сделать все заявления в LINQ, но у меня есть некоторые сомнения с WITH ROLLUP

LINQ

var query = (from p in _repositorio.GetReceitas() 
      where p.DataHoraCriacaoRegistro.Year == 2014 
      group p by new { p.DataHoraCriacaoRegistro.Month } into grp 
      select new ReceitaPorGrupoProduto 
      { 
       // Column with the alias 'Monthly_Value' 
       ValorReceita = grp.Sum(p => p.Valor) 

       // Column with the alias 'Month' 
       DataHora = grp.Key.Month 
      }).ToList(); 

Но как я могу положить WITH ROLLUP в свои LINQ?

Rollup предоставит мне всего лишь сумматор, поэтому, если мы сможем сделать это, не делая оператора ROLLUP для LINQ, все в порядке.

+0

Возможный дубликат [LINQ to SQL version of GROUP BY WITH ROLLUP] (http://stackoverflow.com/questions/1343487/linq-to-sql-version-of-group-by-with-rollup) – paqogomez

+0

@ paqogomez Я прочитал эту тему, но решение было дано в 2009 году, возможно, новое решение может быть выполнено. Не создавайте новый класс или метод. –

+0

Какую версию .NET вы используете? – paqogomez

ответ

1

Довольно интересное решение приводится здесь

https://blogs.msdn.microsoft.com/mitsu/2007/12/21/playing-with-linq-grouping-groupbymany/

Он описывает, как выполнить groupbby несколькими свойствами. I.e:

var result = customers.GroupByMany(c => c.Country, c => c.City); 

В результате вы получите иерархическую структуру, которая может быть просто преобразована в плоский список. Надеюсь, вы сможете принять это для своего дела.

Смежные вопросы