private static IProjection ProjectionOperacaoAtivoGroupingQueryModel() { OperacaoAtivoGroupingQueryModel queryModel = null; IProjection projectionQuantidade = Projections.Property <Operacao>(operacao => operacao.Quantidade); IProjection projectionPreco = Projections.Property <Operacao>(operacao => operacao.Preco); IProjection projectionQuantidadeVezesPreco = Projections.SqlFunction ( function: new VarArgsSQLFunction("(", "*", ")"), type: NHibernateUtil.Double, projectionQuantidade, projectionPreco ); IProjection projectionSumOfQuantidadeVezesPreco = Projections.Sum(projectionQuantidadeVezesPreco); IProjection projectionSumOfQuantidade = Projections.Sum(projectionQuantidade); IProjection projectionPrecoMedio = Projections.SqlFunction ( function: new VarArgsSQLFunction("(", "/", ")"), type: NHibernateUtil.Double, projectionSumOfQuantidadeVezesPreco, projectionSumOfQuantidade ); return(Projections .ProjectionList() .Add(Projections.Group <Operacao>(operacao => operacao.Ativo).WithAlias(() => queryModel.Ativo)) .Add(projectionSumOfQuantidade.WithAlias(() => queryModel.SomaDasQuantidades)) .Add(projectionPrecoMedio.WithAlias(() => queryModel.PrecoMedio)) ); }