【发布时间】:2017-02-03 17:04:00
【问题描述】:
我需要帮助将语句从 LINQ 转换为 SQL
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 中?
汇总只会给我一个累加器,所以,如果我们可以在不为 LINQ 生成 ROLLUP 语句的情况下做到这一点,那就没问题了。
【问题讨论】:
-
@paqogomez 我读了这个帖子,但解决方案是在 2009 年给出的,也许可以做一个新的解决方案。无需构造新的类或方法。
-
您使用的是什么版本的 .NET?
-
为什么要这样做?我的意思是当你遇到 LINQ 限制时为什么不使用原始 SQL?
-
我正在使用 NHibernate,所以为了完成您的建议,我需要创建一个可以处理原始 SQL 的新通用方法还是没有必要?