Efficient pagination using OFFSET-FETCH on SQL Server.
| ID | Name | Category | Price | Stock | Rating | Reviews | SKU |
|---|---|---|---|---|---|---|---|
| 22535 | Bulk Product f9248715 | Sports & Outdoors | $327.17 | 79 | ★ 0.6 | 45 | BULK-987cc5eb |
| 22536 | Bulk Product 04314dd1 | Electronics | $345.71 | 113 | ★ 4.0 | 24 | BULK-62cc033b |
| 22537 | Bulk Product 68dc6f37 | Electronics | $191.34 | 187 | ★ 3.7 | 6 | BULK-95796441 |
| 22538 | Bulk Product eb202149 | Home & Garden | $436.02 | 394 | ★ 1.8 | 62 | BULK-fadb4f2c |
| 22539 | Bulk Product 16328f09 | Books | $331.58 | 83 | ★ 2.5 | 57 | BULK-b09a15b5 |
| 22540 | Bulk Product 8dfb1a0a | Electronics | $526.29 | 470 | ★ 2.9 | 76 | BULK-cd3285fb |
| 22541 | Bulk Product 3eef1d00 | Clothing | $513.32 | 469 | ★ 2.3 | 85 | BULK-a0655e10 |
| 22542 | Bulk Product f63e101a | Electronics | $396.24 | 103 | ★ 0.5 | 62 | BULK-f91f458e |
| 22543 | Bulk Product 9523a9ff | Books | $659.22 | 458 | ★ 4.1 | 66 | BULK-72e6eb97 |
| 22544 | Bulk Product aec3fc92 | Electronics | $346.97 | 64 | ★ 0.1 | 91 | BULK-348ae387 |
| 22545 | Bulk Product 1c85cbfa | Sports & Outdoors | $170.44 | 493 | ★ 2.8 | 34 | BULK-695d5e2c |
| 22546 | Bulk Product 23cc8a33 | Home & Garden | $945.78 | 475 | ★ 4.3 | 75 | BULK-07f95a3a |
| 22547 | Bulk Product 94bb3a51 | Home & Garden | $591.51 | 309 | ★ 2.1 | 24 | BULK-b6bbf033 |
| 22548 | Bulk Product f9e7bfe1 | Books | $875.76 | 401 | ★ 4.7 | 30 | BULK-8c323634 |
| 22549 | Bulk Product 3e6d9638 | Home & Garden | $119.61 | 377 | ★ 4.0 | 92 | BULK-7ac35ed5 |
| 22550 | Bulk Product 9c11dd23 | Home & Garden | $160.07 | 314 | ★ 4.2 | 14 | BULK-f19a2f71 |
| 22551 | Bulk Product 28b971f6 | Books | $457.25 | 194 | ★ 0.4 | 39 | BULK-7d6b4cd0 |
| 22552 | Bulk Product f5c5025b | Home & Garden | $616.09 | 445 | ★ 1.8 | 8 | BULK-597b5c60 |
| 22553 | Bulk Product 465acade | Toys & Games | $420.67 | 117 | ★ 0.0 | 32 | BULK-f9fa5bd9 |
| 22554 | Bulk Product b4e58c68 | Clothing | $772.12 | 477 | ★ 4.6 | 75 | BULK-27f3957d |
| 22555 | Bulk Product 0f37a748 | Sports & Outdoors | $821.00 | 415 | ★ 2.0 | 61 | BULK-61a2bba7 |
| 22556 | Bulk Product 7c8d5f38 | Home & Garden | $38.01 | 57 | ★ 2.5 | 69 | BULK-a531746c |
| 22557 | Bulk Product d5cc170e | Toys & Games | $634.50 | 284 | ★ 3.7 | 96 | BULK-dd6492df |
| 22558 | Bulk Product b00c5edf | Books | $799.64 | 297 | ★ 3.7 | 17 | BULK-eb79aeca |
| 22559 | Bulk Product 5280756b | Toys & Games | $366.45 | 449 | ★ 4.2 | 24 | BULK-78112fd8 |
// Efficient pagination with Skip and Take
public async Task<PaginatedResult<DemoProduct>> GetPaginatedProductsAsync(int page, int pageSize)
{
// Get total count (cached if possible)
var totalCount = await _context.DemoProducts.CountAsync(p => p.IsActive);
// Get page of results
var items = await _context.DemoProducts
.Where(p => p.IsActive)
.OrderBy(p => p.Id) // Important: Must have ORDER BY for consistent paging
.Skip((page - 1) * pageSize) // OFFSET in SQL
.Take(pageSize) // FETCH NEXT in SQL
.AsNoTracking() // No tracking needed for read-only
.ToListAsync();
return new PaginatedResult<DemoProduct>
{
Items = items,
TotalCount = totalCount,
Page = page,
PageSize = pageSize
};
}