protected override Expression VisitNew(NewExpression expression) { var projections = new SqlProjectionExpression[expression.Arguments.Count]; for (int i = 0; i < expression.Arguments.Count; i++) { Visit(expression.Arguments[i]); projections[i] = new SqlProjectionExpression((SqlColumnExpression) ast.Pop(), expression.Members[i].Name); } ast.Push(new SqlSelectExpression(projections)); return expression; }
protected virtual SqlExpression Visit(SqlProjectionExpression expression) { return new SqlProjectionExpression((SqlColumnExpression) Visit(expression.From), expression.To); }
string FormatProjection(SqlProjectionExpression expression) { return string.Format("{0} AS {1}", expression.From.ColumnName, expression.To); }