Efficient pagination using OFFSET-FETCH on SQL Server.
| ID | Name | Category | Price | Stock | Rating | Reviews | SKU |
|---|---|---|---|---|---|---|---|
| 10810 | Bulk Product 71db92d8 | Sports & Outdoors | $470.57 | 380 | ★ 2.6 | 77 | BULK-2f7b6a44 |
| 10811 | Bulk Product 9c6f9021 | Sports & Outdoors | $883.49 | 477 | ★ 1.2 | 16 | BULK-5c848784 |
| 10812 | Bulk Product 41c132f2 | Toys & Games | $795.00 | 1 | ★ 0.7 | 65 | BULK-79b950f0 |
| 10813 | Bulk Product 0538ff06 | Clothing | $882.91 | 476 | ★ 0.1 | 68 | BULK-8a5feb97 |
| 10814 | Bulk Product 782dfc6e | Home & Garden | $943.13 | 38 | ★ 3.1 | 8 | BULK-7c8dbd49 |
| 10815 | Bulk Product f4db6fef | Clothing | $294.22 | 41 | ★ 2.0 | 74 | BULK-4d8f0170 |
| 10816 | Bulk Product 4e8330d2 | Electronics | $92.63 | 94 | ★ 2.2 | 19 | BULK-4bc01013 |
| 10817 | Bulk Product 47bd711c | Sports & Outdoors | $457.67 | 311 | ★ 1.7 | 89 | BULK-3c6f481b |
| 10818 | Bulk Product 19b4b5d8 | Toys & Games | $737.05 | 423 | ★ 4.1 | 12 | BULK-40a696b5 |
| 10819 | Bulk Product c2858ce8 | Home & Garden | $520.49 | 460 | ★ 3.6 | 65 | BULK-820ba722 |
| 10820 | Bulk Product c4223710 | Sports & Outdoors | $816.90 | 89 | ★ 2.1 | 35 | BULK-55d5766b |
| 10821 | Bulk Product 1faffea2 | Toys & Games | $113.95 | 480 | ★ 4.7 | 64 | BULK-292345ab |
| 10822 | Bulk Product f98c4bc6 | Clothing | $41.87 | 210 | ★ 4.4 | 61 | BULK-2e55be13 |
| 10823 | Bulk Product c0b504e0 | Home & Garden | $393.90 | 365 | ★ 3.2 | 60 | BULK-3a752695 |
| 10824 | Bulk Product 5ccb6ea3 | Electronics | $754.69 | 3 | ★ 1.5 | 12 | BULK-ab01217f |
| 10825 | Bulk Product 165cbfc0 | Clothing | $511.55 | 171 | ★ 1.3 | 94 | BULK-d37b8a30 |
| 10826 | Bulk Product 99f2b27c | Electronics | $104.77 | 225 | ★ 1.5 | 87 | BULK-88da4ec6 |
| 10827 | Bulk Product f9e19955 | Clothing | $400.38 | 249 | ★ 0.7 | 70 | BULK-7542dab1 |
| 10828 | Bulk Product f7385b3c | Toys & Games | $784.71 | 425 | ★ 2.1 | 78 | BULK-b0b83cde |
| 10829 | Bulk Product 1d43a2ec | Home & Garden | $106.15 | 102 | ★ 0.5 | 3 | BULK-2741270d |
| 10830 | Bulk Product 2997521f | Home & Garden | $105.03 | 125 | ★ 4.2 | 75 | BULK-89aaf071 |
| 10831 | Bulk Product 34f169b0 | Toys & Games | $359.92 | 120 | ★ 3.4 | 30 | BULK-022a3819 |
| 10832 | Bulk Product 1e612d1f | Sports & Outdoors | $901.59 | 161 | ★ 5.0 | 22 | BULK-66785e7f |
| 10833 | Bulk Product d0f0308c | Home & Garden | $678.26 | 66 | ★ 3.9 | 45 | BULK-0caba583 |
| 10834 | Bulk Product 4ab8225d | Sports & Outdoors | $284.71 | 173 | ★ 4.3 | 34 | BULK-f29d800e |
// 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
};
}