/// <inheritdoc/>
        public override Expression <Func <T, bool> > ToExpression()
        {
            var expression    = _specification.ToExpression();
            var notExpression = Expression.Not(expression.Body);

            return(Expression.Lambda <Func <T, bool> >(notExpression, expression.Parameters));
        }
Example #2
0
        /// <inheritdoc/>
        public override Expression <Func <T, bool> > ToExpression()
        {
            var leftExpression  = _left.ToExpression();
            var rightExpression = _right.ToExpression();

            var invokedExpression = Expression.Invoke(rightExpression, leftExpression.Parameters);
            var body = Expression.OrElse(leftExpression.Body, invokedExpression);

            return(Expression.Lambda <Func <T, bool> >(body, leftExpression.Parameters));
        }
 /// <summary>
 /// Filters a sequence of values based on <paramref name="specification"/>.
 /// </summary>
 /// <typeparam name="TSource">Type.</typeparam>
 /// <param name="source">Sequence.</param>
 /// <param name="specification">Specification.</param>
 /// <returns>An <see cref="IQueryable"/>.</returns>
 public static IQueryable <TSource> Where <TSource>(
     this IQueryable <TSource> source, SpecificationBase <TSource> specification)
 {
     return(source.Where(specification.ToExpression()));
 }