Efficient pagination using OFFSET-FETCH on SQL Server.
| ID | Name | Category | Price | Stock | Rating | Reviews | SKU |
|---|---|---|---|---|---|---|---|
| 5560 | Bulk Product c75525bb | Clothing | $120.46 | 218 | ★ 2.1 | 58 | BULK-ce9b6af7 |
| 5561 | Bulk Product cb5f733d | Toys & Games | $235.89 | 248 | ★ 1.4 | 29 | BULK-95904eb7 |
| 5562 | Bulk Product e737ada9 | Electronics | $712.22 | 159 | ★ 3.9 | 32 | BULK-f1edc603 |
| 5563 | Bulk Product 3fd3cbd6 | Toys & Games | $300.41 | 341 | ★ 3.5 | 97 | BULK-e9038008 |
| 5564 | Bulk Product 903a8859 | Electronics | $70.06 | 450 | ★ 0.8 | 18 | BULK-525c985c |
| 5565 | Bulk Product 9c0f3292 | Sports & Outdoors | $613.14 | 202 | ★ 3.6 | 2 | BULK-86679e6d |
| 5566 | Bulk Product 25ee7971 | Toys & Games | $49.05 | 362 | ★ 0.8 | 14 | BULK-bf06c9bf |
| 5567 | Bulk Product ba0fff9e | Electronics | $638.74 | 286 | ★ 1.3 | 91 | BULK-5d9c7090 |
| 5568 | Bulk Product 2bb4bbc0 | Electronics | $453.55 | 7 | ★ 3.4 | 12 | BULK-a0612899 |
| 5569 | Bulk Product 0eaf97c1 | Home & Garden | $847.41 | 250 | ★ 0.1 | 66 | BULK-21a945d4 |
| 5570 | Bulk Product c13b5898 | Electronics | $782.80 | 268 | ★ 0.9 | 54 | BULK-94f0e25b |
| 5571 | Bulk Product 67108962 | Home & Garden | $962.82 | 233 | ★ 0.2 | 9 | BULK-c871087f |
| 5572 | Bulk Product 2935f148 | Electronics | $405.66 | 227 | ★ 2.2 | 51 | BULK-1a7e3912 |
| 5573 | Bulk Product 2381d186 | Sports & Outdoors | $177.03 | 134 | ★ 1.2 | 82 | BULK-7e87c9e3 |
| 5574 | Bulk Product 369216ce | Sports & Outdoors | $324.56 | 240 | ★ 1.9 | 81 | BULK-caab1d97 |
| 5575 | Bulk Product 93e2e3b4 | Books | $277.31 | 30 | ★ 4.5 | 4 | BULK-5a19de90 |
| 5576 | Bulk Product ed9bed3a | Home & Garden | $791.40 | 388 | ★ 4.2 | 32 | BULK-ba2829db |
| 5577 | Bulk Product f2698e3c | Books | $449.86 | 71 | ★ 2.6 | 67 | BULK-74103b1d |
| 5578 | Bulk Product 88e4a85d | Sports & Outdoors | $522.00 | 400 | ★ 0.3 | 14 | BULK-3b8e1233 |
| 5579 | Bulk Product 26138356 | Home & Garden | $758.81 | 199 | ★ 3.1 | 33 | BULK-7c4be1ff |
| 5580 | Bulk Product 53d95a7e | Sports & Outdoors | $732.55 | 288 | ★ 3.2 | 10 | BULK-ac4d2e92 |
| 5581 | Bulk Product 882d1baa | Sports & Outdoors | $799.22 | 79 | ★ 2.3 | 6 | BULK-a10a6ac4 |
| 5582 | Bulk Product 4c87bb00 | Clothing | $522.15 | 487 | ★ 1.2 | 66 | BULK-cef2551f |
| 5583 | Bulk Product 169caca4 | Home & Garden | $754.13 | 238 | ★ 4.6 | 6 | BULK-37314621 |
| 5584 | Bulk Product 4a937792 | Home & Garden | $401.78 | 163 | ★ 1.7 | 20 | BULK-0fd807dc |
// 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
};
}