public static LambdaSpecification <T> And(LambdaSpecification <T> leftSide, LambdaSpecification <T> rightSide) { Expression <Func <T, bool> > left = leftSide.Predicado; IEnumerable <ParameterExpression> parameters = left.Parameters; InvocationExpression right = Expression.Invoke(rightSide.Predicado, parameters); BinaryExpression andAlso = Expression.AndAlso(left.Body, right); Expression <Func <T, bool> > newExpression = Expression.Lambda <Func <T, bool> >(andAlso, parameters); return(new LambdaSpecification <T>(newExpression)); }
public LambdaSpecification <T> And(LambdaSpecification <T> other) { return(And(this, other)); }
public LambdaSpecification <T> Or(LambdaSpecification <T> other) { return(Or(this, other)); }