Efficient pagination using OFFSET-FETCH on SQL Server.
| ID | Name | Category | Price | Stock | Rating | Reviews | SKU |
|---|---|---|---|---|---|---|---|
| 11735 | Bulk Product 4aa08ce4 | Books | $542.98 | 91 | ★ 1.2 | 54 | BULK-5e5539bf |
| 11736 | Bulk Product 07993ce8 | Sports & Outdoors | $619.16 | 11 | ★ 4.2 | 1 | BULK-75da75d2 |
| 11737 | Bulk Product 812c221c | Books | $941.57 | 258 | ★ 5.0 | 8 | BULK-adb0c35e |
| 11738 | Bulk Product af42396a | Toys & Games | $522.33 | 374 | ★ 1.8 | 38 | BULK-a42ed918 |
| 11739 | Bulk Product 23dc7421 | Clothing | $552.99 | 484 | ★ 4.6 | 34 | BULK-739401dd |
| 11740 | Bulk Product eb154773 | Books | $698.23 | 254 | ★ 3.6 | 74 | BULK-9181a059 |
| 11741 | Bulk Product 54c1c023 | Electronics | $583.78 | 448 | ★ 4.5 | 60 | BULK-b15efec0 |
| 11742 | Bulk Product 8b3854f9 | Home & Garden | $169.54 | 59 | ★ 2.7 | 32 | BULK-9c50be4f |
| 11743 | Bulk Product de7956e5 | Home & Garden | $644.67 | 443 | ★ 2.2 | 11 | BULK-837ce7da |
| 11744 | Bulk Product 73991319 | Clothing | $98.48 | 282 | ★ 0.4 | 23 | BULK-a3620df2 |
| 11745 | Bulk Product c280b4f9 | Home & Garden | $716.89 | 429 | ★ 0.3 | 67 | BULK-b1ec4987 |
| 11746 | Bulk Product f4839876 | Clothing | $299.08 | 309 | ★ 1.7 | 65 | BULK-764479b0 |
| 11747 | Bulk Product a965e070 | Toys & Games | $854.39 | 7 | ★ 0.0 | 74 | BULK-d89b4bfc |
| 11748 | Bulk Product 73692388 | Toys & Games | $216.84 | 109 | ★ 1.8 | 57 | BULK-69a0b814 |
| 11749 | Bulk Product faed32ea | Toys & Games | $782.81 | 223 | ★ 1.9 | 9 | BULK-63a1edd5 |
| 11750 | Bulk Product 96cca23b | Home & Garden | $834.51 | 252 | ★ 2.7 | 69 | BULK-594c3b38 |
| 11751 | Bulk Product 4c586b4a | Toys & Games | $300.48 | 288 | ★ 4.3 | 85 | BULK-2423365e |
| 11752 | Bulk Product 7ef80e8f | Toys & Games | $901.89 | 294 | ★ 3.1 | 91 | BULK-49b321c5 |
| 11753 | Bulk Product 2553f9e6 | Toys & Games | $235.11 | 87 | ★ 4.3 | 36 | BULK-22937a18 |
| 11754 | Bulk Product f6693dcc | Home & Garden | $619.45 | 151 | ★ 3.9 | 20 | BULK-3b147ffe |
| 11755 | Bulk Product 6a9dddb8 | Electronics | $935.40 | 250 | ★ 4.8 | 91 | BULK-e563ca87 |
| 11756 | Bulk Product 20fdd1ce | Sports & Outdoors | $837.36 | 267 | ★ 1.8 | 20 | BULK-f7e010d6 |
| 11757 | Bulk Product b219e945 | Clothing | $408.60 | 256 | ★ 2.5 | 25 | BULK-60eda0c2 |
| 11758 | Bulk Product 7386bad9 | Sports & Outdoors | $769.07 | 275 | ★ 1.4 | 39 | BULK-f28ec4e5 |
| 11759 | Bulk Product 78ac6f5e | Home & Garden | $802.16 | 411 | ★ 1.1 | 20 | BULK-4479cef2 |
// 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
};
}