Skip to content
RzR edited this page Jul 4, 2026 · 3 revisions

PagedListResult Wiki

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.

Why this library

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.

Layered architecture in one picture

+---------------------------------------------------------------------------+
| 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> and PagedQueryWithFilters<T> (namespace RzR.ResultMessage.Pagination.AspNetCore.Query, renamed from ...MinimalApi in v5) bind in both MVC — as [FromPagedQuery] action parameters — and Minimal API, via BindAsync. See MVC Integration and Minimal API Integration.

Wiki map

The wiki is grouped into four areas. Use the sidebar to navigate, or pick the most relevant entry below.

Start here

Reference

ASP.NET Core integration

Operations

Compatibility matrix

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.

License

The libraries are distributed under the terms shipped in the LICENSE file at the root of the repository.

Clone this wiki locally