Efficient pagination using OFFSET-FETCH on SQL Server.
| ID | Name | Category | Price | Stock | Rating | Reviews | SKU |
|---|---|---|---|---|---|---|---|
| 13960 | Bulk Product 49f79281 | Toys & Games | $319.97 | 240 | ★ 2.7 | 67 | BULK-cf8bbed2 |
| 13961 | Bulk Product bfc40e32 | Books | $750.52 | 305 | ★ 2.2 | 96 | BULK-86dd97ae |
| 13962 | Bulk Product 14c3a865 | Clothing | $702.18 | 29 | ★ 0.5 | 60 | BULK-541d1fa6 |
| 13963 | Bulk Product c7dbdffa | Clothing | $992.92 | 145 | ★ 0.4 | 45 | BULK-17ec61f8 |
| 13964 | Bulk Product 66f41ebe | Toys & Games | $544.57 | 327 | ★ 3.8 | 36 | BULK-165461c4 |
| 13965 | Bulk Product 7c367246 | Books | $167.09 | 390 | ★ 1.1 | 15 | BULK-16f6a00f |
| 13966 | Bulk Product 300e02c4 | Clothing | $196.27 | 375 | ★ 4.1 | 14 | BULK-83789b9a |
| 13967 | Bulk Product 14b96e39 | Sports & Outdoors | $819.18 | 479 | ★ 1.4 | 84 | BULK-34ada9f7 |
| 13968 | Bulk Product 29d3e573 | Electronics | $811.22 | 177 | ★ 2.4 | 81 | BULK-40e3d46e |
| 13969 | Bulk Product 10503173 | Toys & Games | $66.86 | 292 | ★ 4.9 | 88 | BULK-f4cf86b7 |
| 13970 | Bulk Product 20a79110 | Sports & Outdoors | $1,001.25 | 268 | ★ 4.5 | 12 | BULK-0d52e937 |
| 13971 | Bulk Product b997e3b5 | Electronics | $556.04 | 17 | ★ 2.7 | 90 | BULK-229c6e00 |
| 13972 | Bulk Product 7611dac2 | Clothing | $734.26 | 414 | ★ 2.9 | 89 | BULK-5f3f49b7 |
| 13973 | Bulk Product 7cd58fdb | Books | $965.86 | 167 | ★ 0.0 | 19 | BULK-d047be13 |
| 13974 | Bulk Product 396a29e8 | Clothing | $333.90 | 190 | ★ 0.9 | 26 | BULK-39b8b895 |
| 13975 | Bulk Product cac7ebc7 | Electronics | $1,000.64 | 197 | ★ 2.4 | 44 | BULK-a787f273 |
| 13976 | Bulk Product b60be248 | Clothing | $265.40 | 374 | ★ 4.7 | 42 | BULK-68c1ef10 |
| 13977 | Bulk Product 60c285b8 | Clothing | $576.31 | 231 | ★ 0.4 | 22 | BULK-a8d3fd41 |
| 13978 | Bulk Product 94612dc4 | Toys & Games | $813.15 | 57 | ★ 4.8 | 5 | BULK-3f4195a0 |
| 13979 | Bulk Product ecff376f | Clothing | $481.07 | 117 | ★ 1.9 | 97 | BULK-d6dad3b3 |
| 13980 | Bulk Product f1cbb1ab | Home & Garden | $750.72 | 84 | ★ 0.8 | 38 | BULK-f292471d |
| 13981 | Bulk Product 4a68c3df | Electronics | $622.57 | 221 | ★ 0.6 | 71 | BULK-4ee1415d |
| 13982 | Bulk Product 62809ceb | Electronics | $728.90 | 318 | ★ 5.0 | 52 | BULK-e48f425d |
| 13983 | Bulk Product afdba7b1 | Clothing | $546.88 | 172 | ★ 1.3 | 46 | BULK-b4435a43 |
| 13984 | Bulk Product 5d9eb3ce | Home & Garden | $219.82 | 185 | ★ 1.7 | 35 | BULK-bd57cbc5 |
// 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
};
}