Efficient pagination using OFFSET-FETCH on SQL Server.
| ID | Name | Category | Price | Stock | Rating | Reviews | SKU |
|---|---|---|---|---|---|---|---|
| 6585 | Bulk Product c43a1347 | Sports & Outdoors | $179.71 | 77 | ★ 3.3 | 40 | BULK-1957c50f |
| 6586 | Bulk Product a1d8a174 | Electronics | $330.49 | 275 | ★ 3.3 | 28 | BULK-487a70b4 |
| 6587 | Bulk Product 0b7c0c01 | Electronics | $92.29 | 241 | ★ 0.4 | 51 | BULK-ad473414 |
| 6588 | Bulk Product 19246902 | Electronics | $736.73 | 480 | ★ 1.7 | 54 | BULK-9c0ed30f |
| 6589 | Bulk Product d173e8b7 | Books | $481.97 | 98 | ★ 1.9 | 15 | BULK-a2eabb18 |
| 6590 | Bulk Product 5d5d561f | Toys & Games | $128.34 | 403 | ★ 0.1 | 4 | BULK-9a762117 |
| 6591 | Bulk Product 4b124b90 | Clothing | $485.73 | 210 | ★ 0.6 | 83 | BULK-bf632124 |
| 6592 | Bulk Product c24d2071 | Books | $486.71 | 173 | ★ 4.3 | 6 | BULK-a55c08a5 |
| 6593 | Bulk Product 01539a67 | Toys & Games | $486.38 | 224 | ★ 5.0 | 13 | BULK-48dd90ba |
| 6594 | Bulk Product 14bddede | Sports & Outdoors | $414.64 | 5 | ★ 0.2 | 36 | BULK-37db3cb6 |
| 6595 | Bulk Product 1280336f | Toys & Games | $802.00 | 385 | ★ 1.2 | 88 | BULK-20091b15 |
| 6596 | Bulk Product b217fac6 | Clothing | $950.19 | 87 | ★ 4.3 | 48 | BULK-4059af69 |
| 6597 | Bulk Product daef2677 | Home & Garden | $371.19 | 235 | ★ 0.8 | 47 | BULK-531d8bbd |
| 6598 | Bulk Product 166996f0 | Home & Garden | $125.65 | 304 | ★ 4.6 | 52 | BULK-41ecd72b |
| 6599 | Bulk Product 1857412a | Home & Garden | $860.35 | 300 | ★ 1.2 | 26 | BULK-bc7b1a33 |
| 6600 | Bulk Product 92bbd9b6 | Electronics | $182.55 | 17 | ★ 4.9 | 47 | BULK-b6631d93 |
| 6601 | Bulk Product 7b8035b8 | Home & Garden | $381.15 | 494 | ★ 3.2 | 10 | BULK-e178e6c3 |
| 6602 | Bulk Product 6d3a8201 | Home & Garden | $454.58 | 408 | ★ 4.4 | 98 | BULK-77b2bce6 |
| 6603 | Bulk Product 79c9956f | Home & Garden | $466.56 | 33 | ★ 1.8 | 48 | BULK-5855ce66 |
| 6604 | Bulk Product d540e431 | Sports & Outdoors | $874.01 | 236 | ★ 3.5 | 96 | BULK-8f65e28c |
| 6605 | Bulk Product 0a33f4ce | Books | $495.86 | 375 | ★ 1.7 | 97 | BULK-ad483b1c |
| 6606 | Bulk Product f7135630 | Books | $635.99 | 164 | ★ 4.5 | 42 | BULK-a99551b2 |
| 6607 | Bulk Product dd1b8154 | Sports & Outdoors | $145.83 | 415 | ★ 3.2 | 37 | BULK-3f6c289f |
| 6608 | Bulk Product b712c208 | Sports & Outdoors | $903.51 | 367 | ★ 3.9 | 91 | BULK-b661998c |
| 6609 | Bulk Product 3930fab0 | Clothing | $118.20 | 81 | ★ 2.6 | 69 | BULK-5a112c1b |
// 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
};
}