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); }
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)); }
protected override Expression VisitClientJoin(ClientJoinExpression join) { var innerKey = this.VisitExpressionList(join.InnerKey); var outerKey = this.VisitExpressionList(join.OuterKey); ProjectionExpression projection = (ProjectionExpression)this.Visit(join.Projection); if (projection != join.Projection || innerKey != join.InnerKey || outerKey != join.OuterKey) { return(new ClientJoinExpression(projection, outerKey, innerKey)); } return(join); }
protected override Expression VisitClientJoin(ClientJoinExpression join) { // treat client joins as new top level var saveTop = this.isTopLevel; var saveSelect = this.currentSelect; this.isTopLevel = true; this.currentSelect = null; Expression result = base.VisitClientJoin(join); this.isTopLevel = saveTop; this.currentSelect = saveSelect; return(result); }
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); }