Пример #1
0
        public void TestPredicateTree()
        {
            var builder = new PredicateTreeBuilder(typeof(Dto));

            builder.Has("Id", ExpressionOperator.Equals, 1)
            .And("Name", ExpressionOperator.IsNotNullOrEmpty, null)
            .And(inner => inner
                 .Has("Birthdate.Year", ExpressionOperator.LessThanOrEqual, 2000)
                 .Or("TimeSince.Hours", ExpressionOperator.GreaterThan, 1))
            .Or("Active", ExpressionOperator.DoesNotEqual, false);

            var e = new ExpressionNodeVisitor().VisitLambda <Dto>(
                builder.RootNode,
                new PredicateBuilderConfiguration()
                .WithItParameterName("x")
                );

            Expression <Func <Dto, bool> > testExpression = (Dto x) =>
                                                            ((x.Id == 1 && !(x.Name == "" || x.Name == null)) && (x.Birthdate.Year <= 2000 || x.TimeSince.Hours > 1)) || x.Active != true;

            Assert.AreEqual(
                testExpression.ToString(),
                e.ToString());

            Assert.True(testExpression.CheckEquals(e));
        }
Пример #2
0
 protected internal virtual ExpressionNode VisitChildren(ExpressionNodeVisitor visitor)
 {
     return(this);
 }
Пример #3
0
 protected internal virtual ExpressionNode Accept(ExpressionNodeVisitor visitor)
 {
     return(visitor.VisitExtension(this));
 }
Пример #4
0
		protected internal virtual ExpressionNode VisitChildren(ExpressionNodeVisitor visitor)
		{
			return this;
		}
Пример #5
0
		protected internal virtual ExpressionNode Accept(ExpressionNodeVisitor visitor)
		{
			return visitor.VisitExtension(this);
		}