예제 #1
0
 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);
 }
예제 #2
0
        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));
        }
예제 #3
0
        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);
        }
예제 #5
0
 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);
 }