using System.Linq.Expressions;
namespace Azaion.Common.Extensions;
public static class QueryableExtensions
{
///
/// Adds Where true predicate only if result of condition is true.
/// If false predicate provided, uses it in case of false result
/// Useful for filters, when filters should be applied only when it was set (not NULL)
///
public static IQueryable WhereIf(this IQueryable query, bool? condition,
Expression> truePredicate,
Expression>? falsePredicate = null)
{
if (!condition.HasValue)
return query;
if (condition.Value)
return query.Where(truePredicate);
return falsePredicate != null
? query.Where(falsePredicate)
: query;
}
}