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; } }