Efficient pagination using OFFSET-FETCH on SQL Server.
| ID | Name | Category | Price | Stock | Rating | Reviews | SKU |
|---|---|---|---|---|---|---|---|
| 5110 | Bulk Product e7de9dc8 | Electronics | $733.60 | 185 | ★ 3.0 | 45 | BULK-b2890f54 |
| 5111 | Bulk Product 0c7be32f | Toys & Games | $563.10 | 425 | ★ 3.7 | 8 | BULK-809e4ad2 |
| 5112 | Bulk Product dc64fd76 | Books | $255.20 | 199 | ★ 2.9 | 26 | BULK-47518684 |
| 5113 | Bulk Product 73221d5b | Clothing | $76.80 | 134 | ★ 0.9 | 69 | BULK-6db98f13 |
| 5114 | Bulk Product dea17980 | Electronics | $914.02 | 498 | ★ 0.7 | 7 | BULK-6f6d5b42 |
| 5115 | Bulk Product 8478f85f | Books | $758.21 | 96 | ★ 1.6 | 31 | BULK-40afcd3d |
| 5116 | Bulk Product 7263edc8 | Home & Garden | $482.34 | 441 | ★ 1.4 | 1 | BULK-2062613f |
| 5117 | Bulk Product d0c47148 | Electronics | $636.09 | 354 | ★ 2.5 | 10 | BULK-7da42299 |
| 5118 | Bulk Product 24b6d147 | Books | $754.88 | 70 | ★ 1.5 | 81 | BULK-1ca7b9fa |
| 5119 | Bulk Product 7c7ab969 | Home & Garden | $363.66 | 136 | ★ 4.8 | 80 | BULK-34f3587a |
| 5120 | Bulk Product 2208ed41 | Clothing | $691.91 | 394 | ★ 3.8 | 41 | BULK-ba9b371a |
| 5121 | Bulk Product 710d29a6 | Toys & Games | $842.94 | 182 | ★ 3.9 | 64 | BULK-86789583 |
| 5122 | Bulk Product 85597fec | Sports & Outdoors | $185.28 | 201 | ★ 1.2 | 54 | BULK-024661a9 |
| 5123 | Bulk Product 07ef15d0 | Sports & Outdoors | $53.88 | 108 | ★ 2.7 | 82 | BULK-e79c7ba9 |
| 5124 | Bulk Product e1761ae2 | Home & Garden | $894.89 | 73 | ★ 3.5 | 92 | BULK-67bc6cab |
| 5125 | Bulk Product 8556b7cf | Clothing | $256.57 | 224 | ★ 1.7 | 39 | BULK-6ccb253a |
| 5126 | Bulk Product 2f5c7560 | Sports & Outdoors | $673.69 | 324 | ★ 3.9 | 64 | BULK-c87b7ae6 |
| 5127 | Bulk Product f112660e | Toys & Games | $572.24 | 446 | ★ 0.1 | 13 | BULK-ae392109 |
| 5128 | Bulk Product a30a2598 | Electronics | $224.36 | 430 | ★ 0.4 | 95 | BULK-585f04f4 |
| 5129 | Bulk Product e4bc9ddf | Sports & Outdoors | $728.47 | 105 | ★ 1.7 | 35 | BULK-8a2cd1dd |
| 5130 | Bulk Product c7f7e114 | Books | $485.03 | 283 | ★ 0.1 | 96 | BULK-d912af72 |
| 5131 | Bulk Product 3bdb29a0 | Home & Garden | $729.14 | 438 | ★ 2.9 | 61 | BULK-8b9851e8 |
| 5132 | Bulk Product e579549b | Books | $852.37 | 401 | ★ 2.7 | 72 | BULK-5ef3ad4b |
| 5133 | Bulk Product 9935dd0a | Home & Garden | $399.77 | 378 | ★ 0.5 | 86 | BULK-a1298850 |
| 5134 | Bulk Product 3fa5ca84 | Books | $134.18 | 55 | ★ 4.7 | 61 | BULK-398227ed |
// 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
};
}