public void AndOrCombinations() { var x = Expression.Parameter(typeof(char), "x"); var p1 = new PredicateExpression { Predicate = Expression.Equal(x, Expression.Constant('x')) }; var p2 = new PredicateExpression { Predicate = Expression.Equal(x, Expression.Constant('y')) }; var p = p1.And(p2); var p3 = new PredicateExpression { Predicate = Expression.Equal(x, Expression.Constant('z')) }; p = p.And(p3); var andp = (AndExpression)p; foreach (var component in andp.Members) { Assert.IsInstanceOf<PredicateExpression>(component); } p = p1.Or(p2).Or(p3); var orp = (OrExpression)p; foreach (var component in orp.Members) { Assert.IsInstanceOf<PredicateExpression>(component); } }