Exemplo n.º 1
0
        IPredicateTreeBuilderNext IPredicateTreeBuilderNext.Or(Func <IPredicateTreeBuilderStart, IPredicateTreeBuilderNext> nestedPredicate)
        {
            var innerBuilder = new PredicateTreeBuilder(instanceType);

            nestedPredicate(innerBuilder);
            var innerNode = new ComplexNode(LogicalOperator.Or);

            innerNode.Nodes.Add(innerBuilder.RootNode);

            RootNode.Nodes.Add(innerNode);

            return(this);
        }
Exemplo n.º 2
0
        Expression INodeVisitor <Expression, ExpressionNodeVisitorInput> .VisitComplexNode(ComplexNode node, ExpressionNodeVisitorInput input)
        {
            Expression expression = null;

            foreach (var childNode in node.Nodes)
            {
                expression =
                    expression == null
                        ? childNode.Accept(this, input)
                        : childNode.LogicalOperator == LogicalOperator.And
                            ? ExpressionEx.AndAlso(expression, childNode.Accept(this, input))
                            : ExpressionEx.OrElse(expression, childNode.Accept(this, input));
            }

            return(expression);
        }