Efficient pagination using OFFSET-FETCH on SQL Server.
| ID | Name | Category | Price | Stock | Rating | Reviews | SKU |
|---|---|---|---|---|---|---|---|
| 20260 | Bulk Product f9750a59 | Books | $50.69 | 325 | ★ 3.3 | 67 | BULK-03cbbf58 |
| 20261 | Bulk Product 29ba8e99 | Electronics | $28.03 | 215 | ★ 0.7 | 84 | BULK-898c9f8c |
| 20262 | Bulk Product ee3292b0 | Sports & Outdoors | $433.79 | 190 | ★ 1.0 | 37 | BULK-0e53c3af |
| 20263 | Bulk Product 377fdf01 | Clothing | $260.46 | 281 | ★ 2.2 | 36 | BULK-d755b39e |
| 20264 | Bulk Product 7690572a | Electronics | $870.11 | 484 | ★ 1.2 | 71 | BULK-6f0662c4 |
| 20265 | Bulk Product fb4ed891 | Sports & Outdoors | $658.08 | 66 | ★ 2.9 | 40 | BULK-195b956b |
| 20266 | Bulk Product 3a973c72 | Toys & Games | $890.81 | 411 | ★ 4.0 | 24 | BULK-2760bbe5 |
| 20267 | Bulk Product 64bc7b08 | Electronics | $411.43 | 474 | ★ 3.8 | 41 | BULK-8505b486 |
| 20268 | Bulk Product 68004a25 | Home & Garden | $709.36 | 409 | ★ 0.6 | 25 | BULK-b8aea019 |
| 20269 | Bulk Product 7b2c35f4 | Toys & Games | $251.52 | 419 | ★ 1.4 | 16 | BULK-aa4727ed |
| 20270 | Bulk Product fe149b19 | Toys & Games | $424.10 | 324 | ★ 2.9 | 90 | BULK-791b6597 |
| 20271 | Bulk Product d395c64f | Sports & Outdoors | $619.11 | 194 | ★ 2.7 | 1 | BULK-3e3d1630 |
| 20272 | Bulk Product bad19d12 | Toys & Games | $877.18 | 310 | ★ 0.0 | 31 | BULK-eac338de |
| 20273 | Bulk Product 42d4cacf | Books | $572.32 | 285 | ★ 1.4 | 32 | BULK-81a55b9f |
| 20274 | Bulk Product 7dd1145a | Sports & Outdoors | $567.75 | 124 | ★ 4.4 | 91 | BULK-475decd7 |
| 20275 | Bulk Product 36238171 | Home & Garden | $369.16 | 282 | ★ 4.7 | 53 | BULK-e5f520da |
| 20276 | Bulk Product f455c4e5 | Books | $510.46 | 437 | ★ 2.1 | 93 | BULK-798d6a1c |
| 20277 | Bulk Product fdb3dcb0 | Books | $992.71 | 253 | ★ 0.8 | 13 | BULK-e3943e3d |
| 20278 | Bulk Product 7def1ff1 | Home & Garden | $328.79 | 26 | ★ 2.0 | 10 | BULK-1cd0a6a5 |
| 20279 | Bulk Product 66871e2c | Clothing | $677.25 | 85 | ★ 0.3 | 18 | BULK-9455a73e |
| 20280 | Bulk Product b3fd3872 | Home & Garden | $982.52 | 368 | ★ 2.0 | 68 | BULK-9f5a1ee6 |
| 20281 | Bulk Product 4ef3a46b | Electronics | $765.92 | 312 | ★ 4.4 | 74 | BULK-08b700e4 |
| 20282 | Bulk Product e82cb192 | Sports & Outdoors | $23.11 | 169 | ★ 0.3 | 55 | BULK-c8856eab |
| 20283 | Bulk Product 9f1b8eb0 | Home & Garden | $869.86 | 464 | ★ 2.9 | 12 | BULK-64a92cc8 |
| 20284 | Bulk Product 844a422c | Toys & Games | $155.82 | 167 | ★ 3.1 | 86 | BULK-06aeb32c |
// 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
};
}