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;
}