/// <summary> /// Applies the specification to the IQueryable type. This includes the Filtering and the Ordering. /// </summary> /// <param name="query"></param> /// <param name="specification"></param> /// <returns></returns> public static IQueryable <TType> ApplySpecification(IQueryable <TType> query, ISpecification <TType> specification) { var processor = new SpecificationProcessor <TType>(); return(processor.BuildQuery(query, specification)); }
/// <summary> /// Applies the specification to the items collection and returns a IQueryable. /// </summary> /// <param name="items"></param> /// <param name="specification"></param> /// <typeparam name="TType"></typeparam> /// <returns></returns> public static IQueryable <TType> ApplySpecification <TType>( this IEnumerable <TType> items, ISpecification <TType> specification ) => SpecificationProcessor <TType> .ApplySpecification(items.AsQueryable(), specification);