Efficient pagination using OFFSET-FETCH on SQL Server.
| ID | Name | Category | Price | Stock | Rating | Reviews | SKU |
|---|---|---|---|---|---|---|---|
| 9810 | Bulk Product 309ccdb6 | Home & Garden | $574.17 | 139 | ★ 2.0 | 9 | BULK-9e517123 |
| 9811 | Bulk Product d6803205 | Books | $658.88 | 177 | ★ 4.9 | 15 | BULK-32223430 |
| 9812 | Bulk Product 1c60c30d | Clothing | $584.57 | 348 | ★ 1.6 | 13 | BULK-b5cbc623 |
| 9813 | Bulk Product 543be492 | Sports & Outdoors | $471.45 | 220 | ★ 3.8 | 63 | BULK-6e1ba108 |
| 9814 | Bulk Product 74095564 | Electronics | $849.69 | 280 | ★ 1.7 | 37 | BULK-5c4c6287 |
| 9815 | Bulk Product 4715d77f | Books | $341.16 | 186 | ★ 2.9 | 39 | BULK-914f07f9 |
| 9816 | Bulk Product 8be6a04c | Sports & Outdoors | $954.84 | 460 | ★ 2.2 | 84 | BULK-d7bcea83 |
| 9817 | Bulk Product dee77662 | Books | $153.39 | 201 | ★ 0.1 | 58 | BULK-9aa95447 |
| 9818 | Bulk Product d5e92594 | Toys & Games | $467.89 | 132 | ★ 0.6 | 99 | BULK-d5d4c2cf |
| 9819 | Bulk Product 5dd0bf2d | Toys & Games | $778.95 | 241 | ★ 1.1 | 66 | BULK-c1471964 |
| 9820 | Bulk Product e457823b | Books | $1,000.40 | 326 | ★ 2.9 | 83 | BULK-1a8ddcd3 |
| 9821 | Bulk Product 501c67f6 | Home & Garden | $632.17 | 130 | ★ 4.5 | 89 | BULK-1c80bb08 |
| 9822 | Bulk Product b3327baf | Books | $766.88 | 247 | ★ 3.6 | 25 | BULK-267679ec |
| 9823 | Bulk Product f12a6945 | Sports & Outdoors | $551.15 | 335 | ★ 1.9 | 21 | BULK-70c2731f |
| 9824 | Bulk Product 83fc89bb | Sports & Outdoors | $494.59 | 107 | ★ 1.5 | 7 | BULK-7cacec7f |
| 9825 | Bulk Product b00f642e | Home & Garden | $962.49 | 204 | ★ 0.6 | 27 | BULK-3a63c5b3 |
| 9826 | Bulk Product 84594225 | Books | $872.50 | 134 | ★ 2.6 | 17 | BULK-c5aafb0a |
| 9827 | Bulk Product b05b624d | Sports & Outdoors | $26.74 | 205 | ★ 3.3 | 72 | BULK-d4f5e2dd |
| 9828 | Bulk Product 23abfc33 | Books | $206.93 | 442 | ★ 0.9 | 21 | BULK-568fa421 |
| 9829 | Bulk Product 9f435e47 | Books | $619.43 | 134 | ★ 3.5 | 80 | BULK-fc30d034 |
| 9830 | Bulk Product 4a3bf648 | Sports & Outdoors | $937.51 | 109 | ★ 3.1 | 21 | BULK-dd9b2aff |
| 9831 | Bulk Product f93e6420 | Home & Garden | $149.01 | 162 | ★ 0.5 | 41 | BULK-2ad7d869 |
| 9832 | Bulk Product 33ad1151 | Electronics | $962.04 | 423 | ★ 1.1 | 90 | BULK-74d3172d |
| 9833 | Bulk Product 1e1082df | Books | $803.96 | 236 | ★ 4.0 | 10 | BULK-f01e48c3 |
| 9834 | Bulk Product 2953b63a | Sports & Outdoors | $354.19 | 26 | ★ 3.7 | 62 | BULK-50ab2ae0 |
// 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
};
}