/// <summary> /// Filters a sequence of values based on a filter. /// </summary> /// <typeparam name="T">The element type of the sequence.</typeparam> /// <param name="source">An <see cref="IQueryable{T}"/> to filter.</param> /// <param name="filter">A filter to test each element for a condition.</param> /// <returns>An <see cref="IQueryable{T}"/> that contains elements from the input sequence that satisfy the condition specified by filter.</returns> /// <exception cref="ArgumentNullException">Thrown when source or filter is null.</exception> public static IQueryable <T> Filter <T>(this IQueryable <T> source, QueryableFilter <T> filter) { if (filter == null) { throw new ArgumentNullException(nameof(filter)); } return(filter.Apply(source)); }
/// <summary> /// Filters a sequence of values based on a query string. /// </summary> /// <typeparam name="T">The element type of the sequence.</typeparam> /// <param name="source">An <see cref="IQueryable{T}"/> to filter.</param> /// <param name="filterQuery">A query string to be interpreted as a filter to test each element for a condition.</param> /// <returns>An <see cref="IQueryable{T}"/> that contains elements from the input sequence that satisfy the condition specified by filter query.</returns> /// <exception cref="ArgumentNullException">Thrown when source is null.</exception> /// <exception cref="ArgumentException">Thrown when filter query is invalid.</exception> public static IQueryable <T> Filter <T>(this IQueryable <T> source, string filterQuery) { return(QueryableFilter.TryParse(filterQuery, out QueryableFilter <T> filter) ? source.Filter(filter) : throw new ArgumentException("Invalid filter query", nameof(filterQuery))); }
public static IQueryable <TData> Filter <TModel, TData>(this IQueryable <TData> source, IMapper mapper, QueryableFilter <TModel> filter) { if (filter == null) { throw new ArgumentNullException(nameof(filter)); } if (mapper == null) { throw new ArgumentNullException(nameof(mapper)); } var f = mapper.MapExpression <Expression <Func <TData, bool> > >(filter.FilterExpression); return(source.WhereIf(f != null, f)); }
public static IQueryable <TData> Filter <TModel, TData>(this IQueryable <TData> source, IMapper mapper, string filterQuery) { return(QueryableFilter.TryParse(filterQuery, out QueryableFilter <TModel> filter) ? source.Filter(mapper, filter) : throw new ArgumentException("Invalid filter query", nameof(filterQuery))); }