/// <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)); }
/// <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())); }