public NotSpecification(IClause <TEntity> originalSpecification) { if (originalSpecification == null) { throw new ArgumentNullException(nameof(originalSpecification)); } _originalCriteria = originalSpecification.SatisfiedBy(); }
public override Expression <Func <TEntity, bool> > SatisfiedBy() { var leftExpression = _left.SatisfiedBy(); var rightExpression = _right.SatisfiedBy(); var parameter = Expression.Parameter(typeof(TEntity)); var leftVisitor = new ReplaceExpressionVisitor(leftExpression.Parameters[0], parameter); var left = leftVisitor.Visit(leftExpression.Body); var rightVisitor = new ReplaceExpressionVisitor(rightExpression.Parameters[0], parameter); var right = rightVisitor.Visit(rightExpression.Body); return(Expression.Lambda <Func <TEntity, bool> >( Expression.AndAlso(left, right), parameter)); }