Efficient pagination using OFFSET-FETCH on SQL Server.
| ID | Name | Category | Price | Stock | Rating | Reviews | SKU |
|---|---|---|---|---|---|---|---|
| 11160 | Bulk Product 2f9fd318 | Clothing | $529.49 | 296 | ★ 4.6 | 53 | BULK-2d8655d8 |
| 11161 | Bulk Product 4bfd01ba | Home & Garden | $80.14 | 242 | ★ 3.8 | 21 | BULK-d61b886c |
| 11162 | Bulk Product 9d30be24 | Books | $393.55 | 224 | ★ 1.4 | 4 | BULK-4e42aacf |
| 11163 | Bulk Product 05796ea4 | Books | $327.41 | 386 | ★ 2.5 | 44 | BULK-a8f992ec |
| 11164 | Bulk Product c105760e | Home & Garden | $693.01 | 334 | ★ 4.4 | 47 | BULK-bc457b4b |
| 11165 | Bulk Product 60d2b0a8 | Electronics | $831.48 | 337 | ★ 0.3 | 39 | BULK-7e85fa26 |
| 11166 | Bulk Product f0c344d4 | Toys & Games | $393.80 | 84 | ★ 2.0 | 73 | BULK-57106ba6 |
| 11167 | Bulk Product 3104f3fc | Clothing | $673.76 | 428 | ★ 0.9 | 19 | BULK-4247b918 |
| 11168 | Bulk Product aaf771c9 | Books | $543.76 | 202 | ★ 1.8 | 48 | BULK-286b97de |
| 11169 | Bulk Product 85410302 | Electronics | $711.66 | 181 | ★ 3.5 | 64 | BULK-e1f6f83e |
| 11170 | Bulk Product 5d985c7b | Clothing | $313.65 | 419 | ★ 0.5 | 17 | BULK-2e6e0e6d |
| 11171 | Bulk Product 3f0e57d8 | Electronics | $695.05 | 354 | ★ 4.3 | 56 | BULK-2b04f93a |
| 11172 | Bulk Product 3ff96a7b | Toys & Games | $731.00 | 392 | ★ 1.1 | 20 | BULK-b3565e24 |
| 11173 | Bulk Product 013ca81e | Electronics | $309.03 | 112 | ★ 2.4 | 8 | BULK-0a89c5c3 |
| 11174 | Bulk Product c265d087 | Toys & Games | $890.38 | 433 | ★ 1.1 | 1 | BULK-651e3db6 |
| 11175 | Bulk Product 4051d86a | Home & Garden | $310.16 | 361 | ★ 1.8 | 67 | BULK-ab09abea |
| 11176 | Bulk Product 1ad39a6c | Sports & Outdoors | $288.56 | 177 | ★ 2.6 | 1 | BULK-4046e9e9 |
| 11177 | Bulk Product 92d51ef4 | Books | $619.20 | 151 | ★ 2.6 | 0 | BULK-6cc06a7e |
| 11178 | Bulk Product a1a8b8f7 | Home & Garden | $421.02 | 360 | ★ 2.8 | 82 | BULK-112b762a |
| 11179 | Bulk Product 60092219 | Sports & Outdoors | $122.79 | 170 | ★ 1.6 | 28 | BULK-bcfcfcde |
| 11180 | Bulk Product d4b9c578 | Home & Garden | $78.46 | 349 | ★ 5.0 | 0 | BULK-b12de2ef |
| 11181 | Bulk Product e1cffcc1 | Home & Garden | $124.67 | 134 | ★ 1.2 | 56 | BULK-4f6c4774 |
| 11182 | Bulk Product a9125faa | Electronics | $1,001.32 | 375 | ★ 3.1 | 21 | BULK-4ad2ac8a |
| 11183 | Bulk Product 7c471295 | Sports & Outdoors | $934.23 | 134 | ★ 2.3 | 13 | BULK-16652f76 |
| 11184 | Bulk Product 41c62568 | Clothing | $746.22 | 124 | ★ 2.5 | 22 | BULK-fcc583f4 |
// 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
};
}