Repository navigation
Home
Welcome to the documentation for the PagedListResult family of libraries. The repository provides a complete, layered solution for server-side pagination in .NET applications, from the plain request/response contract on netstandard2.0 up to a full ASP.NET Core integration with minimal-API support, RFC-compliant headers and ProblemDetails error handling.
If you came here for the source code or the README, see the main repository. If you only need a quick orientation, the Getting Started page is the right entry point.
Server-side paged grids and tables are needed in almost every line-of-business application. The implementation tends to be repetitive across projects:
- Compute total count, page count, current page.
- Project a slice of the query.
- Translate UI-driven filters into LINQ expressions.
- Apply a search term across multiple text columns.
- Sort by a property name supplied by the client.
- Sometimes pin a few "always on top" rows.
- Surface meaningful errors when the request is malformed.
PagedListResult does all of that for you, while staying small and predictable. You stay in control of the IQueryable<T>, the DbContext and the model shape; the library handles the pagination plumbing.
+---------------------------------------------------------------------------+
| PagedListResult.Web(RzR.ResultMessage.Pagination.AspNetCore) |
| ASP.NET Core integration |
| - BaseApiPagedResultController |
| - [FromPagedQuery] model binder |
| - PagedQuery<T> / PagedQueryWithFilters<T> (.NET 7+) |
| - Action filter + endpoint filter (headers, Server-Timing) |
| - PageableMetadata allow-list registry |
| - ApplicationModelConvention (OpenAPI auto-annotations) |
| - ToPagedHttpResult (minimal-API success/failure adapter) |
| depends on -> PagedListResult |
+---------------------------------------------------------------------------+
| PagedListResult(RzR.ResultMessage.Pagination.EntityFrameworkCore) |
| IQueryable<T> extensions for EF Core |
| - GetPaged / GetPagedAsync |
| - GetPagedWithMainFiltersAsync |
| - GetPagedWithFiltersAsync |
| - SOAP/XML adapters |
| depends on -> PagedListResult.Common |
+---------------------------------------------------------------------------+
| PagedListResult.Common(RzR.ResultMessage.Pagination.Core) |
| Expression builders on top of System.Linq.Expressions |
| - Search across text fields |
| - Order by property name (with default-property fallback) |
| - Filter pipeline (And/Or, dependencies, predefined rows) |
| - Attributes for default order / default top-record key |
| depends on -> PagedListResult.DataModels |
+---------------------------------------------------------------------------+
| PagedListResult.DataModels(RzR.ResultMessage.Pagination.Abstractions) |
| Plain DTOs: PagedRequest, PageRequestWithFilters, |
| PagedResult<T>, DataFilter, DataSearchDefinition, ... |
| netstandard2.0, no third-party runtime dependencies |
+---------------------------------------------------------------------------+
Dual-host query wrappers (v5+):
PagedQuery<T>andPagedQueryWithFilters<T>(namespaceRzR.ResultMessage.Pagination.AspNetCore.Query, renamed from...MinimalApiin v5) bind in both MVC — as[FromPagedQuery]action parameters — and Minimal API, viaBindAsync. See MVC Integration and Minimal API Integration.
The wiki is grouped into four areas. Use the sidebar to navigate, or pick the most relevant entry below.
- Data Models Reference
- Expression Builders (Common)
- EntityFramework Core Extensions
- Query String Syntax
- Web Integration Overview
- MVC Integration
- Minimal API Integration
- Configuration and Options
- Allow List Registry
- Response Headers and ProblemDetails
- OpenAPI and ApiExplorer
| Package | TargetFramework(s) | Assembly | Root namespace |
|---|---|---|---|
| PagedListResult.DataModels | netstandard2.0 | RzR.ResultMessage.Pagination.Abstractions | RzR.ResultMessage.Pagination.Abstractions.* |
| PagedListResult.Common | netstandard2.0 | RzR.ResultMessage.Pagination.Core | RzR.ResultMessage.Pagination.Core.* |
| PagedListResult | netstandard2.0 + multi-target | RzR.ResultMessage.Pagination.EntityFrameworkCore | RzR.ResultMessage.Pagination.EntityFrameworkCore.* |
| PagedListResult.Web | netstandard2.1; net5.0; net6.0; net7.0; net8.0; net9.0 | RzR.ResultMessage.Pagination.AspNetCore | RzR.ResultMessage.Pagination.AspNetCore.* |
Minimal-API features (PagedQuery<T>, PagedQueryWithFilters<T>, WithPagedResult(), ToPagedHttpResult, PagedResultEndpointFilter) are guarded behind #if NET7_0_OR_GREATER and only available on the corresponding target frameworks.
The libraries are distributed under the terms shipped in the LICENSE file at the root of the repository.
PagedListResult is maintained by RzR. GitHub repository.
Start here
Reference
- Data Models Reference
- Expression Builders (Common)
- EntityFramework Core Extensions
- Query String Syntax
ASP.NET Core integration
- Web Integration Overview
- MVC Integration
- Minimal API Integration
- Configuration and Options
- Allow List Registry
- Response Headers and ProblemDetails
- OpenAPI and ApiExplorer
Operations