Efficient pagination using OFFSET-FETCH on SQL Server.
| ID | Name | Category | Price | Stock | Rating | Reviews | SKU |
|---|---|---|---|---|---|---|---|
| 13585 | Bulk Product eef493bb | Books | $816.15 | 404 | ★ 4.0 | 33 | BULK-3ea35186 |
| 13586 | Bulk Product 24ccafdf | Home & Garden | $363.20 | 180 | ★ 3.3 | 85 | BULK-88c9e318 |
| 13587 | Bulk Product 66170d69 | Toys & Games | $125.13 | 303 | ★ 2.6 | 71 | BULK-6755a035 |
| 13588 | Bulk Product 819d271a | Sports & Outdoors | $509.78 | 469 | ★ 0.8 | 38 | BULK-b6fa9ea0 |
| 13589 | Bulk Product af107017 | Clothing | $144.81 | 0 | ★ 4.1 | 37 | BULK-5b319177 |
| 13590 | Bulk Product 68f6aed0 | Books | $613.24 | 246 | ★ 0.5 | 14 | BULK-960ffabc |
| 13591 | Bulk Product 15a26056 | Home & Garden | $647.56 | 320 | ★ 1.7 | 35 | BULK-0f870d63 |
| 13592 | Bulk Product ceb12a7a | Sports & Outdoors | $214.10 | 307 | ★ 3.8 | 48 | BULK-f4d7829f |
| 13593 | Bulk Product 83f9648a | Clothing | $117.67 | 77 | ★ 0.1 | 61 | BULK-8057d7f5 |
| 13594 | Bulk Product 9e6bf01f | Home & Garden | $455.83 | 74 | ★ 2.7 | 63 | BULK-de21d1db |
| 13595 | Bulk Product 2c86950b | Books | $811.64 | 438 | ★ 4.8 | 84 | BULK-835d6e88 |
| 13596 | Bulk Product 27e1cc2f | Home & Garden | $650.47 | 308 | ★ 1.1 | 28 | BULK-75b372bc |
| 13597 | Bulk Product 787bd53c | Toys & Games | $53.58 | 1 | ★ 1.2 | 86 | BULK-2dba53c5 |
| 13598 | Bulk Product fd0c45c7 | Books | $91.46 | 404 | ★ 0.1 | 2 | BULK-d68e9b34 |
| 13599 | Bulk Product abdada8a | Toys & Games | $550.36 | 392 | ★ 1.0 | 2 | BULK-cc6372e0 |
| 13600 | Bulk Product 7ca6756d | Sports & Outdoors | $312.65 | 38 | ★ 2.9 | 47 | BULK-cacd0e46 |
| 13601 | Bulk Product a768f29a | Toys & Games | $403.42 | 84 | ★ 1.8 | 78 | BULK-eee5cab2 |
| 13602 | Bulk Product b9318ece | Toys & Games | $866.10 | 302 | ★ 3.9 | 34 | BULK-15bf49c6 |
| 13603 | Bulk Product dac0146a | Clothing | $843.01 | 386 | ★ 4.9 | 4 | BULK-7bdc455e |
| 13604 | Bulk Product 8f06a0b4 | Home & Garden | $293.37 | 172 | ★ 2.9 | 6 | BULK-160ade73 |
| 13605 | Bulk Product 183807ac | Sports & Outdoors | $386.47 | 342 | ★ 2.4 | 77 | BULK-07ac6427 |
| 13606 | Bulk Product 1c4acd7a | Sports & Outdoors | $83.23 | 18 | ★ 0.6 | 84 | BULK-ac593311 |
| 13607 | Bulk Product b594d9a7 | Books | $162.27 | 213 | ★ 4.4 | 31 | BULK-7bb65c30 |
| 13608 | Bulk Product 8ede734b | Electronics | $686.91 | 396 | ★ 4.7 | 26 | BULK-8393dfde |
| 13609 | Bulk Product 73269c1a | Books | $75.70 | 180 | ★ 3.0 | 4 | BULK-cb358d6c |
// 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
};
}