protected DbScalarExpression UpdateScalar(DbScalarExpression scalar, DbSelectExpression select) { if (select != scalar.Select) { return(new DbScalarExpression(scalar.Type, select)); } return(scalar); }
protected override Expression VisitScalar(DbScalarExpression subquery) { this.Write("("); this.WriteLine(Indentation.Inner); this.Visit(subquery.Select); this.WriteLine(Indentation.Same); this.Write(")"); this.Indent(Indentation.Outer); return(subquery); }
protected override Expression VisitScalar(DbScalarExpression scalar) { var select = scalar.Select; var colType = this.language.TypeSystem.GetColumnType(scalar.Type); if (string.IsNullOrEmpty(select.Columns[0].Name)) { var name = select.Columns.GetAvailableColumnName("scalar"); select = select.SetColumns(new[] { new DbColumnDeclaration(name, select.Columns[0].Expression, colType) }); } this.currentFrom = new DbJoinExpression(JoinType.OuterApply, this.currentFrom, select, null); return(new DbColumnExpression(scalar.Type, colType, scalar.Select.Alias, select.Columns[0].Name)); }
protected virtual bool CompareScalar(DbScalarExpression a, DbScalarExpression b) { return(this.Compare(a.Select, b.Select)); }
protected DbAggregateSubqueryExpression UpdateAggregateSubquery(DbAggregateSubqueryExpression aggregate, DbScalarExpression subquery) { if (subquery != aggregate.AggregateAsSubquery) { return(new DbAggregateSubqueryExpression(aggregate.GroupByAlias, aggregate.AggregateInGroupSelect, subquery)); } return(aggregate); }
protected virtual Expression VisitScalar(DbScalarExpression scalar) { return(this.UpdateScalar(scalar, this.Visit(scalar.Select) as DbSelectExpression)); }
public DbAggregateSubqueryExpression(TableAlias groupByAlias, Expression aggregateInGroupSelect, DbScalarExpression aggregateAsSubquery) : base(DbExpressionType.AggregateSubquery, aggregateAsSubquery.Type) { this.AggregateInGroupSelect = aggregateInGroupSelect; this.GroupByAlias = groupByAlias; this.AggregateAsSubquery = aggregateAsSubquery; }