PaginatedResponse<T>
Paginated response (PaginatedResponse<T>)
Section titled “Paginated response (PaginatedResponse<T>)”Generic wrapper for paginated results:
// Simple creationvar page = PaginatedResponse<ProductResponse>.Create(items, totalCount: 100, page: 2, pageSize: 10);
// From IQueryable (handles Skip/Take automatically)var page = await PaginatedResponse<Product>.CreateAsync(_db.Products, page: 1, pageSize: 20);
// Map items (e.g. entity → response DTO)var response = page.Map(p => ProductResponse.FromEntity(p));
// Propertiespage.Items // IReadOnlyList<T>page.TotalCount // intpage.Page // intpage.PageSize // intpage.TotalPages // computedpage.HasNextPage // computedpage.HasPreviousPage // computedFull example with [QueryDto] + [ResponseDto]:
[HttpGet]public async Task<IActionResult> List([FromQuery] ProductQuery query, int page = 1, int pageSize = 20){ var filtered = query.Apply(_db.Products); var paginated = await PaginatedResponse<Product>.CreateAsync(filtered, page, pageSize); var response = paginated.Map(p => ProductResponse.FromEntity(p)); return Ok(response);}