Efficient pagination using OFFSET-FETCH on SQL Server.
| ID | Name | Category | Price | Stock | Rating | Reviews | SKU |
|---|---|---|---|---|---|---|---|
| 14510 | Bulk Product 7e302217 | Clothing | $396.22 | 24 | ★ 2.7 | 79 | BULK-d5effd4a |
| 14511 | Bulk Product 744111e2 | Toys & Games | $732.34 | 217 | ★ 0.7 | 61 | BULK-6a7ac5de |
| 14512 | Bulk Product 460f810c | Toys & Games | $714.01 | 173 | ★ 3.8 | 5 | BULK-59a41e18 |
| 14513 | Bulk Product 9134609c | Toys & Games | $225.49 | 11 | ★ 4.2 | 2 | BULK-5747fb43 |
| 14514 | Bulk Product 1320096a | Electronics | $104.79 | 118 | ★ 0.8 | 77 | BULK-c2fd1335 |
| 14515 | Bulk Product 7abd92c0 | Sports & Outdoors | $272.07 | 217 | ★ 2.2 | 28 | BULK-713093f5 |
| 14516 | Bulk Product d7833b25 | Books | $974.62 | 464 | ★ 3.8 | 56 | BULK-09846315 |
| 14517 | Bulk Product 65b59d55 | Sports & Outdoors | $686.49 | 493 | ★ 0.8 | 3 | BULK-450cfd2b |
| 14518 | Bulk Product d70cd731 | Home & Garden | $790.35 | 43 | ★ 3.3 | 40 | BULK-09d10c59 |
| 14519 | Bulk Product fa89d8a9 | Sports & Outdoors | $861.83 | 268 | ★ 0.9 | 35 | BULK-71dcef9b |
| 14520 | Bulk Product cf371c76 | Sports & Outdoors | $99.11 | 181 | ★ 1.2 | 87 | BULK-8514f939 |
| 14521 | Bulk Product 7ba84cd2 | Sports & Outdoors | $411.48 | 329 | ★ 4.4 | 18 | BULK-c5add64c |
| 14522 | Bulk Product d89fc33e | Home & Garden | $305.29 | 194 | ★ 0.8 | 41 | BULK-27e68280 |
| 14523 | Bulk Product ae8142ac | Books | $535.07 | 83 | ★ 3.2 | 24 | BULK-74a20d7f |
| 14524 | Bulk Product 991837ca | Toys & Games | $859.23 | 39 | ★ 4.3 | 34 | BULK-03d22e22 |
| 14525 | Bulk Product 580b17cd | Clothing | $500.86 | 3 | ★ 1.5 | 5 | BULK-e70626f5 |
| 14526 | Bulk Product 1e265df1 | Toys & Games | $422.98 | 167 | ★ 2.7 | 65 | BULK-16ec72ae |
| 14527 | Bulk Product d3ab2c14 | Home & Garden | $427.64 | 469 | ★ 5.0 | 80 | BULK-9e21c26b |
| 14528 | Bulk Product a212c123 | Home & Garden | $585.62 | 121 | ★ 1.0 | 9 | BULK-f3837e66 |
| 14529 | Bulk Product 969e60a8 | Books | $477.76 | 306 | ★ 3.0 | 63 | BULK-8eec41fa |
| 14530 | Bulk Product 1b8a6a15 | Home & Garden | $626.79 | 252 | ★ 3.6 | 2 | BULK-2a6a3bd6 |
| 14531 | Bulk Product 7ddc10df | Electronics | $894.58 | 87 | ★ 3.5 | 21 | BULK-fcf016a6 |
| 14532 | Bulk Product 99e36f57 | Toys & Games | $303.36 | 102 | ★ 0.2 | 17 | BULK-b20b4bce |
| 14533 | Bulk Product f103f05c | Books | $545.09 | 137 | ★ 0.5 | 37 | BULK-c253d495 |
| 14534 | Bulk Product 7de07587 | Clothing | $632.25 | 175 | ★ 2.7 | 18 | BULK-4dcf7bac |
// 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
};
}