public static async Task <PagedResponse <TResponse> > ToPagedResultAsync <TSource, TResponse>( this IQueryable <TSource> queryable, AbstractPagingFilter <TSource> filterRequest, Func <IEnumerable <TSource>, IEnumerable <TResponse> > resultMapper) { var(query, total) = filterRequest.ApplyTo(queryable); var data = filterRequest.CountOnly ? Enumerable.Empty <TSource>() : await query.ToListAsync(); return(new PagedResponse <TResponse>( await total(), filterRequest.PageSize, filterRequest.Page, resultMapper(data).ToArray())); }
public async Task <PagedResponse <TResponse> > GetPagedAsync(AbstractPagingFilter <TEntity> queryExpression) => await Query.ToPagedResultAsync(queryExpression, ResponseMapper.Map);