Efficient pagination using OFFSET-FETCH on SQL Server.
| ID | Name | Category | Price | Stock | Rating | Reviews | SKU |
|---|---|---|---|---|---|---|---|
| 12060 | Bulk Product 384ed18b | Home & Garden | $519.32 | 477 | ★ 4.4 | 34 | BULK-d934fa92 |
| 12061 | Bulk Product 05f634bb | Clothing | $620.21 | 376 | ★ 1.3 | 25 | BULK-7a042fcd |
| 12062 | Bulk Product ef1d5d83 | Sports & Outdoors | $450.85 | 283 | ★ 4.8 | 11 | BULK-ae190b60 |
| 12063 | Bulk Product 7b7941ca | Sports & Outdoors | $331.40 | 423 | ★ 1.2 | 78 | BULK-d028e0ff |
| 12064 | Bulk Product f4adb481 | Books | $930.56 | 455 | ★ 3.0 | 90 | BULK-f21711a2 |
| 12065 | Bulk Product 6da652e5 | Electronics | $364.25 | 233 | ★ 3.6 | 15 | BULK-4cf1a616 |
| 12066 | Bulk Product 71d646dc | Books | $194.27 | 382 | ★ 0.8 | 57 | BULK-c24687c8 |
| 12067 | Bulk Product c6f9590d | Electronics | $589.98 | 33 | ★ 4.6 | 81 | BULK-e9d353d3 |
| 12068 | Bulk Product f4b14f29 | Books | $397.09 | 355 | ★ 1.7 | 7 | BULK-38c23fb9 |
| 12069 | Bulk Product d6ad5c71 | Electronics | $981.30 | 115 | ★ 3.7 | 12 | BULK-c45a4b18 |
| 12070 | Bulk Product 51a3bfe3 | Home & Garden | $93.01 | 432 | ★ 1.4 | 86 | BULK-f713984c |
| 12071 | Bulk Product 068da1c2 | Clothing | $728.94 | 45 | ★ 2.8 | 94 | BULK-71a3e6c6 |
| 12072 | Bulk Product 39ba7b69 | Toys & Games | $930.69 | 160 | ★ 2.8 | 69 | BULK-687ae153 |
| 12073 | Bulk Product 0e67d12a | Sports & Outdoors | $426.41 | 145 | ★ 2.6 | 99 | BULK-a6874b06 |
| 12074 | Bulk Product 9561e18e | Home & Garden | $606.95 | 317 | ★ 0.4 | 22 | BULK-85dda9ce |
| 12075 | Bulk Product 226ff8c5 | Toys & Games | $954.18 | 236 | ★ 4.7 | 76 | BULK-2a5b769e |
| 12076 | Bulk Product 1cd759ff | Toys & Games | $467.85 | 402 | ★ 4.1 | 91 | BULK-f59cc112 |
| 12077 | Bulk Product 476410ae | Books | $522.79 | 122 | ★ 4.8 | 83 | BULK-b52ebdc5 |
| 12078 | Bulk Product 6e242920 | Electronics | $390.23 | 419 | ★ 4.6 | 80 | BULK-15440cc5 |
| 12079 | Bulk Product f7525f7b | Electronics | $755.80 | 301 | ★ 3.7 | 99 | BULK-d93fd940 |
| 12080 | Bulk Product 94562141 | Home & Garden | $650.70 | 468 | ★ 3.7 | 82 | BULK-e5fbf881 |
| 12081 | Bulk Product 6ec93f70 | Home & Garden | $317.54 | 132 | ★ 0.1 | 61 | BULK-91f561f6 |
| 12082 | Bulk Product a33a84e5 | Books | $684.89 | 133 | ★ 2.1 | 1 | BULK-4a7e571e |
| 12083 | Bulk Product 0ff4f9ad | Sports & Outdoors | $478.58 | 86 | ★ 3.1 | 73 | BULK-ade3deb8 |
| 12084 | Bulk Product eb6c6ade | Sports & Outdoors | $965.75 | 12 | ★ 3.5 | 17 | BULK-e522e5d1 |
// 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
};
}