Efficient pagination using OFFSET-FETCH on SQL Server.
| ID | Name | Category | Price | Stock | Rating | Reviews | SKU |
|---|---|---|---|---|---|---|---|
| 19685 | Bulk Product f4496ee6 | Toys & Games | $953.59 | 270 | ★ 1.9 | 42 | BULK-fb42ee2e |
| 19686 | Bulk Product 85702b8e | Books | $717.17 | 367 | ★ 1.1 | 0 | BULK-ff999cc9 |
| 19687 | Bulk Product 3743f5a4 | Sports & Outdoors | $725.74 | 335 | ★ 1.7 | 81 | BULK-894b051a |
| 19688 | Bulk Product ddc77b89 | Books | $980.35 | 241 | ★ 4.7 | 91 | BULK-e906971a |
| 19689 | Bulk Product ca99030e | Toys & Games | $272.41 | 257 | ★ 2.6 | 21 | BULK-7697947b |
| 19690 | Bulk Product c439da97 | Books | $991.83 | 87 | ★ 0.7 | 27 | BULK-3d9edfca |
| 19691 | Bulk Product 0e79bd14 | Home & Garden | $277.47 | 305 | ★ 2.9 | 50 | BULK-55f4feee |
| 19692 | Bulk Product d907245c | Sports & Outdoors | $701.37 | 414 | ★ 3.6 | 45 | BULK-f1b27ad0 |
| 19693 | Bulk Product d4c7f191 | Home & Garden | $362.51 | 173 | ★ 4.7 | 55 | BULK-a78daf24 |
| 19694 | Bulk Product 2011d204 | Electronics | $29.88 | 359 | ★ 4.6 | 46 | BULK-5994e170 |
| 19695 | Bulk Product 1f04550a | Books | $851.25 | 17 | ★ 2.4 | 93 | BULK-fc8aded3 |
| 19696 | Bulk Product a2a84d7c | Toys & Games | $553.73 | 238 | ★ 4.7 | 14 | BULK-28c00bd7 |
| 19697 | Bulk Product acaffd3f | Home & Garden | $661.43 | 50 | ★ 2.6 | 31 | BULK-906b5137 |
| 19698 | Bulk Product 4e0f9026 | Books | $709.55 | 456 | ★ 1.0 | 88 | BULK-6cd86fbb |
| 19699 | Bulk Product e987e591 | Sports & Outdoors | $24.28 | 92 | ★ 4.4 | 34 | BULK-5622c29e |
| 19700 | Bulk Product da8ecd58 | Toys & Games | $281.76 | 467 | ★ 1.4 | 45 | BULK-d3a19a71 |
| 19701 | Bulk Product 1a63500a | Toys & Games | $599.96 | 252 | ★ 2.4 | 73 | BULK-818c557b |
| 19702 | Bulk Product 79a085d8 | Electronics | $765.60 | 328 | ★ 3.2 | 81 | BULK-cbbeb96f |
| 19703 | Bulk Product 229d0222 | Sports & Outdoors | $10.04 | 255 | ★ 0.6 | 9 | BULK-71267bdb |
| 19704 | Bulk Product 6bee4d8a | Books | $806.59 | 209 | ★ 2.2 | 73 | BULK-2addf1fa |
| 19705 | Bulk Product 6f0f8a88 | Sports & Outdoors | $827.46 | 186 | ★ 2.4 | 65 | BULK-e4d5d569 |
| 19706 | Bulk Product 6804745c | Home & Garden | $944.32 | 313 | ★ 0.0 | 8 | BULK-cf328a2a |
| 19707 | Bulk Product 1ef1ba37 | Sports & Outdoors | $28.35 | 63 | ★ 0.5 | 25 | BULK-2bcbec57 |
| 19708 | Bulk Product f8575a08 | Electronics | $100.96 | 305 | ★ 1.3 | 90 | BULK-c2a2cd98 |
| 19709 | Bulk Product de9bd555 | Electronics | $807.77 | 335 | ★ 0.4 | 83 | BULK-6b6ece0b |
// 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
};
}