protected virtual bool CompareJoin(JoinExpression a, JoinExpression b) { if (!((a.Join == b.Join) && this.Compare(a.Left, b.Left))) { return(false); } if ((a.Join == JoinType.CrossApply) || (a.Join == JoinType.OuterApply)) { ScopedDictionary <TableAlias, TableAlias> aliasScope = this.aliasScope; try { this.aliasScope = new ScopedDictionary <TableAlias, TableAlias>(this.aliasScope); this.MapAliases(a.Left, b.Left); return(this.Compare(a.Right, b.Right) && this.Compare(a.Condition, b.Condition)); } finally { this.aliasScope = aliasScope; } } return(this.Compare(a.Right, b.Right) && this.Compare(a.Condition, b.Condition)); }
protected override Expression VisitJoin(JoinExpression join) { Expression expression; Expression expression4; if (join.Join == JoinType.SingletonLeftOuter) { AliasedExpression expression2 = this.Visit(join.Right) as AliasedExpression; if (!((expression2 == null) || this.allColumnsUsed.ContainsKey(expression2.Alias))) { return(this.Visit(join.Left)); } Expression expression3 = this.Visit(join.Condition); expression4 = this.Visit(join.Left); expression = this.Visit(join.Right); return(base.UpdateJoin(join, join.Join, expression4, expression, expression3)); } Expression condition = this.Visit(join.Condition); expression = this.VisitSource(join.Right); expression4 = this.VisitSource(join.Left); return(base.UpdateJoin(join, join.Join, expression4, expression, condition)); }
protected override Expression VisitJoin(JoinExpression join) { this.VisitJoinLeft(join.Left); this.WriteLine(Indentation.Same); switch (join.Join) { case JoinType.CrossJoin: this.Write("CROSS JOIN "); break; case JoinType.InnerJoin: this.Write("INNER JOIN "); break; case JoinType.CrossApply: this.Write("CROSS APPLY "); break; case JoinType.OuterApply: this.Write("OUTER APPLY "); break; case JoinType.LeftOuter: case JoinType.SingletonLeftOuter: this.Write("LEFT OUTER JOIN "); break; } this.VisitJoinRight(join.Right); if (join.Condition != null) { this.WriteLine(Indentation.Inner); this.Write("ON "); this.VisitPredicate(join.Condition); this.Indent(Indentation.Outer); } return(join); }
private bool IsCrossJoin(Expression expression) { JoinExpression expression2 = expression as JoinExpression; return((expression2 != null) && (expression2.Join == JoinType.CrossJoin)); }