Efficient pagination using OFFSET-FETCH on SQL Server.
| ID | Name | Category | Price | Stock | Rating | Reviews | SKU |
|---|---|---|---|---|---|---|---|
| 19610 | Bulk Product b4745301 | Books | $929.38 | 390 | ★ 2.6 | 86 | BULK-40be64d6 |
| 19611 | Bulk Product 83f44a6f | Electronics | $732.11 | 477 | ★ 1.5 | 36 | BULK-35c6427c |
| 19612 | Bulk Product 9262a80c | Books | $332.28 | 140 | ★ 0.1 | 34 | BULK-65095378 |
| 19613 | Bulk Product 8925868c | Books | $89.46 | 141 | ★ 2.3 | 64 | BULK-22ed8d2e |
| 19614 | Bulk Product b6e9cea6 | Clothing | $527.27 | 53 | ★ 1.0 | 41 | BULK-ea5606c7 |
| 19615 | Bulk Product 4ab791d2 | Sports & Outdoors | $613.55 | 67 | ★ 3.2 | 20 | BULK-89c24113 |
| 19616 | Bulk Product 9a8c7fa5 | Home & Garden | $514.21 | 353 | ★ 1.3 | 79 | BULK-7dfb686e |
| 19617 | Bulk Product 8c198c52 | Sports & Outdoors | $627.39 | 286 | ★ 4.5 | 27 | BULK-3c5e0871 |
| 19618 | Bulk Product 371c8ff4 | Home & Garden | $262.30 | 25 | ★ 0.8 | 37 | BULK-d2dcacbc |
| 19619 | Bulk Product ef561bce | Sports & Outdoors | $262.65 | 371 | ★ 3.0 | 66 | BULK-11ec2858 |
| 19620 | Bulk Product c0cccbb5 | Sports & Outdoors | $519.00 | 327 | ★ 2.3 | 61 | BULK-d9cf66dd |
| 19621 | Bulk Product a3db75cc | Clothing | $332.63 | 148 | ★ 3.3 | 29 | BULK-2ffba998 |
| 19622 | Bulk Product 78fc0bdf | Books | $695.69 | 102 | ★ 3.0 | 66 | BULK-a806ddaa |
| 19623 | Bulk Product 33ce3350 | Home & Garden | $926.83 | 258 | ★ 4.4 | 98 | BULK-a41c9485 |
| 19624 | Bulk Product 6f3fe956 | Home & Garden | $48.97 | 250 | ★ 2.6 | 5 | BULK-c4ff221f |
| 19625 | Bulk Product eb7821b0 | Electronics | $866.56 | 263 | ★ 2.7 | 90 | BULK-a43a8cce |
| 19626 | Bulk Product 96a101ab | Clothing | $775.05 | 482 | ★ 4.0 | 62 | BULK-4eeb6e62 |
| 19627 | Bulk Product 295cb2f4 | Toys & Games | $169.94 | 451 | ★ 4.7 | 19 | BULK-fe973d7a |
| 19628 | Bulk Product cd7312c6 | Books | $640.13 | 367 | ★ 1.1 | 96 | BULK-8656a4e5 |
| 19629 | Bulk Product 2d348395 | Toys & Games | $261.80 | 484 | ★ 2.4 | 17 | BULK-47e97017 |
| 19630 | Bulk Product 14b971ed | Home & Garden | $841.82 | 362 | ★ 2.0 | 48 | BULK-d6f107ed |
| 19631 | Bulk Product c324a301 | Electronics | $557.42 | 139 | ★ 0.4 | 76 | BULK-c45270ef |
| 19632 | Bulk Product db4cffb4 | Home & Garden | $219.10 | 272 | ★ 1.7 | 28 | BULK-b33c20d9 |
| 19633 | Bulk Product 1137e6f3 | Clothing | $420.60 | 224 | ★ 4.6 | 29 | BULK-a055cddf |
| 19634 | Bulk Product 4f9fdf1e | Books | $752.73 | 252 | ★ 4.4 | 59 | BULK-9c61a790 |
// 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
};
}