Remotion.Linq.SqlBackend.MappingResolution.SubStatementReferenceResolver.VisitSqlGroupingSelectExpression C# (CSharp) Method

VisitSqlGroupingSelectExpression() public method

public VisitSqlGroupingSelectExpression ( SqlGroupingSelectExpression expression ) : Expression
expression Remotion.Linq.SqlBackend.SqlStatementModel.SqlGroupingSelectExpression
return System.Linq.Expressions.Expression
    public Expression VisitSqlGroupingSelectExpression (SqlGroupingSelectExpression expression)
    {
      ArgumentUtility.CheckNotNull ("expression", expression);

      var referenceToKeyExpression = ResolveChildExpression (expression.KeyExpression);
      var referenceToElementExpression = ResolveChildExpression (expression.ElementExpression);
      var referenceToAggregationExpressions = expression.AggregationExpressions.Select (expr => ResolveChildExpression (expr));

      var newGroupingExpression = SqlGroupingSelectExpression.CreateWithNames (referenceToKeyExpression, referenceToElementExpression);
      foreach (var aggregationExpression in referenceToAggregationExpressions)
        newGroupingExpression.AddAggregationExpressionWithName (aggregationExpression);

      _context.AddGroupReferenceMapping (newGroupingExpression, _sqlTable);

      return newGroupingExpression;
    }