Efficient pagination using OFFSET-FETCH on SQL Server.
| ID | Name | Category | Price | Stock | Rating | Reviews | SKU |
|---|---|---|---|---|---|---|---|
| 13110 | Bulk Product ab4d32a2 | Electronics | $856.84 | 177 | ★ 2.6 | 96 | BULK-e1500b8f |
| 13111 | Bulk Product a9b5ad59 | Clothing | $379.47 | 151 | ★ 1.0 | 39 | BULK-86ffb339 |
| 13112 | Bulk Product b89f0ffe | Sports & Outdoors | $19.98 | 403 | ★ 2.9 | 84 | BULK-67be35e7 |
| 13113 | Bulk Product ddaf8d2e | Books | $575.96 | 398 | ★ 1.9 | 43 | BULK-09c01041 |
| 13114 | Bulk Product f07ed1e2 | Sports & Outdoors | $93.96 | 408 | ★ 0.3 | 18 | BULK-3b8371f5 |
| 13115 | Bulk Product 0b868846 | Sports & Outdoors | $970.00 | 215 | ★ 1.9 | 79 | BULK-2e272fc9 |
| 13116 | Bulk Product 7a0fa1cd | Books | $357.48 | 103 | ★ 2.4 | 48 | BULK-faa8ec39 |
| 13117 | Bulk Product ccc42233 | Home & Garden | $479.55 | 75 | ★ 0.6 | 92 | BULK-6f68b987 |
| 13118 | Bulk Product 14af09c2 | Sports & Outdoors | $799.47 | 23 | ★ 1.4 | 87 | BULK-8cd31d9d |
| 13119 | Bulk Product 7113ea85 | Books | $125.63 | 252 | ★ 0.1 | 37 | BULK-cb7a2de0 |
| 13120 | Bulk Product 48d009db | Home & Garden | $633.05 | 93 | ★ 0.7 | 48 | BULK-61c9e743 |
| 13121 | Bulk Product 889070ce | Sports & Outdoors | $392.20 | 217 | ★ 0.7 | 16 | BULK-961bbb93 |
| 13122 | Bulk Product 3bf8db3e | Toys & Games | $280.16 | 181 | ★ 3.0 | 14 | BULK-dcf74007 |
| 13123 | Bulk Product feadde2a | Electronics | $482.75 | 241 | ★ 4.1 | 94 | BULK-be8544b4 |
| 13124 | Bulk Product 4d59da5c | Sports & Outdoors | $407.64 | 425 | ★ 3.0 | 78 | BULK-2516bdfc |
| 13125 | Bulk Product 96bbc737 | Home & Garden | $956.74 | 196 | ★ 2.5 | 79 | BULK-5fd623b8 |
| 13126 | Bulk Product 1378dfdb | Home & Garden | $722.06 | 55 | ★ 2.2 | 63 | BULK-dab2297b |
| 13127 | Bulk Product 0c8b7d2b | Electronics | $108.44 | 212 | ★ 3.8 | 57 | BULK-90ee7aff |
| 13128 | Bulk Product 1219c1a1 | Home & Garden | $139.79 | 396 | ★ 3.6 | 78 | BULK-c63eca71 |
| 13129 | Bulk Product b41e241d | Sports & Outdoors | $247.85 | 58 | ★ 0.6 | 12 | BULK-0284a9c5 |
| 13130 | Bulk Product e6beb681 | Toys & Games | $16.01 | 46 | ★ 2.6 | 56 | BULK-9d464b04 |
| 13131 | Bulk Product 0f7ab2bd | Books | $212.29 | 438 | ★ 4.3 | 42 | BULK-7db00d62 |
| 13132 | Bulk Product 6445c66b | Sports & Outdoors | $628.39 | 353 | ★ 4.4 | 37 | BULK-5a87c5ad |
| 13133 | Bulk Product 87683d6e | Electronics | $681.96 | 306 | ★ 3.5 | 45 | BULK-7304e6af |
| 13134 | Bulk Product fd86aca3 | Toys & Games | $905.40 | 160 | ★ 3.1 | 31 | BULK-deb18058 |
// 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
};
}