Beispiel #1
0
        /// <inheritdoc cref="UnaryExpression.Update(Expression)" select="summary"/>
        public JoinClause Update(ParameterExpression variable, Expression enumerable, Expression left, Expression right)
        {
            if (Variable == variable && Enumerable == enumerable && Left == left && Right == right)
            {
                return(this);
            }

            return(Expressive.Join(variable, enumerable, left, right));
        }
Beispiel #2
0
        private QueryClause VisitContinuationClause(QueryClauseSyntax clause)
        {
            switch (clause)
            {
            case FromClauseSyntax from:
                return(Expressive.From(null, from.Expression.Accept(this)));

            case LetClauseSyntax let:
                return(Expressive.Let(null, let.Expression.Accept(this)));

            case JoinClauseSyntax join:
                return(Expressive.Join(null, join.InExpression.Accept(this), join.LeftExpression.Accept(this), join.RightExpression.Accept(this)));

            case WhereClauseSyntax where:
                return(Expressive.Where(where.Condition.Accept(this)));

            case OrderByClauseSyntax orderby:
                return(Expressive.OrderBy(Utils.Select(@orderby.Orderings, x => Expressive.Ordering(x.Expression.Accept(this), x.AscendingOrDescendingKeyword.Text == "ascending"))));

            default:
                throw new ArgumentException("Invalid clause.");
            }
        }