/// <summary> /// Visits the client join. /// </summary> /// <param name="join">The join.</param> /// <returns></returns> protected virtual Expression VisitClientJoin(ClientJoinExpression join) { var projection = (ProjectionExpression)this.Visit(join.Projection); var outerKey = this.VisitExpressionList(join.OuterKey); var innerKey = this.VisitExpressionList(join.InnerKey); return(this.UpdateClientJoin(join, projection, outerKey, innerKey)); }
/// <summary> /// Updates the client join. /// </summary> /// <param name="join">The join.</param> /// <param name="projection">The projection.</param> /// <param name="outerKey">The outer key.</param> /// <param name="innerKey">The inner key.</param> /// <returns></returns> protected ClientJoinExpression UpdateClientJoin(ClientJoinExpression join, ProjectionExpression projection, IEnumerable <Expression> outerKey, IEnumerable <Expression> innerKey) { if (projection != join.Projection || outerKey != join.OuterKey || innerKey != join.InnerKey) { return(new ClientJoinExpression(projection, outerKey, innerKey)); } return(join); }
/// <summary> /// Visits the client join. /// </summary> /// <param name="join">The join.</param> /// <returns></returns> protected virtual Expression VisitClientJoin(ClientJoinExpression join) { this.AddAlias(join.Projection.Select.Alias); this.Write("ClientJoin("); this.WriteLine(Indentation.Inner); this.Write("OuterKey("); this.VisitExpressionList(join.OuterKey); this.Write("),"); this.WriteLine(Indentation.Same); this.Write("InnerKey("); this.VisitExpressionList(join.InnerKey); this.Write("),"); this.WriteLine(Indentation.Same); this.Visit(join.Projection); this.WriteLine(Indentation.Outer); this.Write(")"); return(join); }