/// <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)));
 }
示例#3
0
        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));
        }
示例#4
0
 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)));
 }