Efficient pagination using OFFSET-FETCH on SQL Server.
| ID | Name | Category | Price | Stock | Rating | Reviews | SKU |
|---|---|---|---|---|---|---|---|
| 19235 | Bulk Product ecd4f206 | Books | $751.18 | 262 | ★ 1.8 | 41 | BULK-856079ae |
| 19236 | Bulk Product 98e97c74 | Sports & Outdoors | $805.50 | 312 | ★ 4.6 | 90 | BULK-14a2cf58 |
| 19237 | Bulk Product 9d748f2a | Clothing | $582.24 | 290 | ★ 1.2 | 28 | BULK-cf2cb175 |
| 19238 | Bulk Product 5395e62b | Books | $374.81 | 362 | ★ 4.9 | 38 | BULK-18b14f76 |
| 19239 | Bulk Product 12cbfd0b | Clothing | $575.07 | 263 | ★ 0.3 | 54 | BULK-dbb34544 |
| 19240 | Bulk Product 9c3928d7 | Home & Garden | $947.91 | 235 | ★ 0.7 | 75 | BULK-0412e3d4 |
| 19241 | Bulk Product 58f63144 | Home & Garden | $30.35 | 196 | ★ 1.3 | 32 | BULK-49a01eb4 |
| 19242 | Bulk Product f5494f29 | Electronics | $789.93 | 207 | ★ 1.7 | 17 | BULK-b457138a |
| 19243 | Bulk Product f2cfb645 | Books | $81.09 | 166 | ★ 4.3 | 99 | BULK-4e7c5112 |
| 19244 | Bulk Product 3d3e239e | Toys & Games | $614.27 | 168 | ★ 4.7 | 61 | BULK-ed67afe9 |
| 19245 | Bulk Product 6a47fc69 | Toys & Games | $41.68 | 138 | ★ 3.7 | 14 | BULK-3663f5ae |
| 19246 | Bulk Product dea1db5d | Electronics | $416.94 | 415 | ★ 1.9 | 63 | BULK-25ae51e5 |
| 19247 | Bulk Product 6f37295f | Home & Garden | $335.38 | 430 | ★ 1.3 | 42 | BULK-cc361e5d |
| 19248 | Bulk Product 001e2fdf | Home & Garden | $841.14 | 216 | ★ 2.7 | 71 | BULK-9ba9e5fe |
| 19249 | Bulk Product 1152afeb | Toys & Games | $354.41 | 55 | ★ 4.8 | 15 | BULK-d08ef04e |
| 19250 | Bulk Product 597fcd0a | Clothing | $676.58 | 170 | ★ 3.4 | 7 | BULK-2e5ec4cf |
| 19251 | Bulk Product 34e202bf | Clothing | $208.46 | 169 | ★ 3.9 | 22 | BULK-9630085a |
| 19252 | Bulk Product 1efc5f68 | Toys & Games | $923.43 | 446 | ★ 2.2 | 68 | BULK-1620c15b |
| 19253 | Bulk Product 970f4554 | Clothing | $608.66 | 267 | ★ 1.0 | 9 | BULK-6e021bda |
| 19254 | Bulk Product f2aa2e2e | Sports & Outdoors | $425.79 | 459 | ★ 3.3 | 68 | BULK-f2b14555 |
| 19255 | Bulk Product 1aa4f57e | Books | $629.61 | 359 | ★ 1.9 | 76 | BULK-baea32e2 |
| 19256 | Bulk Product e07d7d53 | Books | $188.87 | 296 | ★ 3.5 | 4 | BULK-cb9a6987 |
| 19257 | Bulk Product 6a8ae81d | Books | $749.65 | 492 | ★ 3.4 | 90 | BULK-81f038da |
| 19258 | Bulk Product c5fcb384 | Books | $523.57 | 390 | ★ 4.8 | 25 | BULK-a89d42ad |
| 19259 | Bulk Product 62458cd2 | Toys & Games | $783.47 | 442 | ★ 0.2 | 53 | BULK-05716cf3 |
// 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
};
}