Efficient pagination using OFFSET-FETCH on SQL Server.
| ID | Name | Category | Price | Stock | Rating | Reviews | SKU |
|---|---|---|---|---|---|---|---|
| 17485 | Bulk Product 7300098f | Electronics | $364.90 | 68 | ★ 2.3 | 96 | BULK-ee3dbd18 |
| 17486 | Bulk Product c731398e | Books | $405.47 | 429 | ★ 1.7 | 82 | BULK-d3f19a6d |
| 17487 | Bulk Product 3aea498a | Books | $907.50 | 197 | ★ 3.0 | 6 | BULK-3c33a76b |
| 17488 | Bulk Product b75c1919 | Clothing | $321.36 | 59 | ★ 0.6 | 30 | BULK-0d3b0743 |
| 17489 | Bulk Product 71984174 | Home & Garden | $880.26 | 161 | ★ 3.0 | 27 | BULK-b32d0c6c |
| 17490 | Bulk Product 88d9adb9 | Toys & Games | $837.37 | 76 | ★ 0.3 | 62 | BULK-afb601db |
| 17491 | Bulk Product 6bddc5c0 | Electronics | $957.33 | 26 | ★ 2.4 | 4 | BULK-875e2722 |
| 17492 | Bulk Product 6dc71c0f | Home & Garden | $550.24 | 147 | ★ 0.8 | 69 | BULK-dff43694 |
| 17493 | Bulk Product a73348ff | Electronics | $100.51 | 206 | ★ 4.0 | 69 | BULK-dfaf06e9 |
| 17494 | Bulk Product c29836d5 | Sports & Outdoors | $430.78 | 189 | ★ 2.3 | 10 | BULK-5da7f505 |
| 17495 | Bulk Product 65bf4c78 | Electronics | $659.99 | 479 | ★ 0.4 | 80 | BULK-59ae8a85 |
| 17496 | Bulk Product b4c72b10 | Toys & Games | $780.68 | 157 | ★ 4.2 | 57 | BULK-124b6adb |
| 17497 | Bulk Product 0221b517 | Sports & Outdoors | $182.23 | 418 | ★ 1.2 | 69 | BULK-374cf208 |
| 17498 | Bulk Product 4cacb70a | Books | $165.61 | 482 | ★ 1.0 | 38 | BULK-6738b47d |
| 17499 | Bulk Product bac30974 | Books | $294.57 | 429 | ★ 1.8 | 86 | BULK-f3e61100 |
| 17500 | Bulk Product d65288bd | Books | $495.28 | 74 | ★ 3.6 | 65 | BULK-56334095 |
| 17501 | Bulk Product 9abece18 | Toys & Games | $604.90 | 368 | ★ 2.2 | 57 | BULK-1b85298a |
| 17502 | Bulk Product fd3be77c | Home & Garden | $303.05 | 341 | ★ 4.9 | 33 | BULK-d3f6dd21 |
| 17503 | Bulk Product fd89de0b | Home & Garden | $525.27 | 52 | ★ 0.6 | 9 | BULK-0c0e6ef9 |
| 17504 | Bulk Product 6d5aa145 | Clothing | $676.44 | 391 | ★ 4.0 | 67 | BULK-b672693f |
| 17505 | Bulk Product 69cb44da | Sports & Outdoors | $499.76 | 484 | ★ 4.3 | 70 | BULK-22904f42 |
| 17506 | Bulk Product 4473ac62 | Home & Garden | $527.15 | 313 | ★ 1.4 | 50 | BULK-921c2c61 |
| 17507 | Bulk Product 966d7f33 | Sports & Outdoors | $917.96 | 481 | ★ 3.2 | 29 | BULK-55366f1b |
| 17508 | Bulk Product 02c71c39 | Books | $988.77 | 303 | ★ 1.2 | 29 | BULK-d6264eab |
| 17509 | Bulk Product c16659ca | Sports & Outdoors | $878.29 | 27 | ★ 0.3 | 31 | BULK-b7f06082 |
// 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
};
}