Esempio n. 1
0
        protected override CamlExpression VisitWhereLogicalExpression(CamlWhereLogicalExpression expression)
        {
            CamlLogicalOperator previousOperator = currentOperater;

            using (new WhereExpressionScope(this, expression.Operator)) {
                if (expression.Operator == CamlLogicalOperator.Not)
                {
                    queryBuilder.Append(" -");
                    Visit(expression.Left);
                }
                else
                {
                    if (previousOperator != expression.Operator)
                    {
                        queryBuilder.Append("(");
                    }
                    Visit(expression.Left);
                    if (expression.Operator == CamlLogicalOperator.Or)
                    {
                        queryBuilder.Append(" OR ");
                    }
                    else
                    {
                        queryBuilder.Append(" ");
                    }
                    Visit(expression.Right);
                    if (previousOperator != expression.Operator)
                    {
                        queryBuilder.Append(")");
                    }
                }
            }
            return(expression);
        }
Esempio n. 2
0
 public WhereExpressionScope(KeywordQueryCamlVisitor visitor, CamlLogicalOperator currentOperator)
 {
     if (!visitor.whereExpressionScope)
     {
         visitor.whereExpressionScope = true;
         this.query        = visitor.query;
         this.queryBuilder = visitor.queryBuilder;
     }
     this.previousOperator   = visitor.currentOperater;
     this.visitor            = visitor;
     visitor.currentOperater = currentOperator == CamlLogicalOperator.Not ? previousOperator : currentOperator;
 }
Esempio n. 3
0
 /// <summary>
 /// Called when visiting a logical comparison expression inside a &lt;Where/&gt; element.
 /// </summary>
 /// <param name="operatorValue">Type of logical operator.</param>
 /// <param name="leftExpression">Left expression.</param>
 /// <param name="rightExpression">Right expression.</param>
 protected internal abstract void VisitWhereLogicalExpression(CamlLogicalOperator operatorValue, CamlExpression leftExpression, CamlExpression rightExpression);