Efficient pagination using OFFSET-FETCH on SQL Server.
| ID | Name | Category | Price | Stock | Rating | Reviews | SKU |
|---|---|---|---|---|---|---|---|
| 11460 | Bulk Product 725d3f0e | Books | $884.60 | 237 | ★ 1.5 | 23 | BULK-3fdcf450 |
| 11461 | Bulk Product 3ec2c6c3 | Sports & Outdoors | $178.99 | 237 | ★ 2.6 | 25 | BULK-1b95862a |
| 11462 | Bulk Product 7b70578d | Clothing | $627.44 | 466 | ★ 4.9 | 28 | BULK-3c0a10e5 |
| 11463 | Bulk Product f76179f8 | Electronics | $108.29 | 384 | ★ 3.5 | 58 | BULK-c8cb7cc3 |
| 11464 | Bulk Product afedda90 | Sports & Outdoors | $125.04 | 413 | ★ 3.0 | 30 | BULK-8313a55e |
| 11465 | Bulk Product e445371b | Toys & Games | $148.42 | 491 | ★ 1.5 | 29 | BULK-cbd6fec7 |
| 11466 | Bulk Product 4fd1a0cd | Home & Garden | $344.35 | 281 | ★ 3.3 | 68 | BULK-4524721e |
| 11467 | Bulk Product 2b298545 | Sports & Outdoors | $305.25 | 126 | ★ 4.0 | 33 | BULK-dc7e6ade |
| 11468 | Bulk Product 2d0a030b | Clothing | $197.40 | 307 | ★ 0.3 | 53 | BULK-94a097f9 |
| 11469 | Bulk Product 3fd1eeca | Electronics | $793.47 | 64 | ★ 3.9 | 98 | BULK-00bc1048 |
| 11470 | Bulk Product d03dea33 | Home & Garden | $952.96 | 179 | ★ 4.5 | 29 | BULK-10a6d84b |
| 11471 | Bulk Product 7610e27e | Books | $538.29 | 309 | ★ 2.3 | 9 | BULK-5d28663b |
| 11472 | Bulk Product 600e003d | Toys & Games | $167.18 | 105 | ★ 1.5 | 0 | BULK-49a1a079 |
| 11473 | Bulk Product 90b52840 | Electronics | $809.50 | 110 | ★ 1.5 | 48 | BULK-d923bbf9 |
| 11474 | Bulk Product c1e27d6f | Books | $774.91 | 411 | ★ 0.6 | 50 | BULK-7348941b |
| 11475 | Bulk Product 6b59f92b | Sports & Outdoors | $411.80 | 424 | ★ 2.9 | 42 | BULK-5e88abaf |
| 11476 | Bulk Product e884e6f8 | Books | $348.03 | 9 | ★ 1.8 | 3 | BULK-1f2b35b1 |
| 11477 | Bulk Product 4c38d24c | Clothing | $271.43 | 254 | ★ 3.6 | 35 | BULK-04c84dcf |
| 11478 | Bulk Product 5c48cadf | Books | $732.63 | 292 | ★ 3.4 | 71 | BULK-5c1bd583 |
| 11479 | Bulk Product 779c37bd | Toys & Games | $259.54 | 21 | ★ 2.0 | 46 | BULK-7d7908c7 |
| 11480 | Bulk Product ab61d168 | Sports & Outdoors | $708.26 | 438 | ★ 3.8 | 9 | BULK-d133ea69 |
| 11481 | Bulk Product 28a0bb45 | Electronics | $388.36 | 83 | ★ 2.1 | 34 | BULK-4eeb168e |
| 11482 | Bulk Product d47c8b64 | Sports & Outdoors | $797.41 | 96 | ★ 4.8 | 8 | BULK-da8d9fac |
| 11483 | Bulk Product e5e4bc68 | Toys & Games | $643.94 | 62 | ★ 3.7 | 55 | BULK-df42e12f |
| 11484 | Bulk Product d06d5bc2 | Home & Garden | $113.94 | 75 | ★ 3.3 | 61 | BULK-5b61797e |
// 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
};
}