Efficient pagination using OFFSET-FETCH on SQL Server.
| ID | Name | Category | Price | Stock | Rating | Reviews | SKU |
|---|---|---|---|---|---|---|---|
| 5060 | Bulk Product c90fbf63 | Electronics | $151.82 | 83 | ★ 1.7 | 53 | BULK-983f7898 |
| 5061 | Bulk Product 9f22df81 | Books | $300.93 | 387 | ★ 2.6 | 45 | BULK-1df44f12 |
| 5062 | Bulk Product d91f9482 | Home & Garden | $270.86 | 378 | ★ 1.9 | 44 | BULK-de79dbb7 |
| 5063 | Bulk Product fd0f74bf | Sports & Outdoors | $886.48 | 25 | ★ 0.3 | 96 | BULK-1a46c33c |
| 5064 | Bulk Product 029f1dbe | Books | $128.00 | 257 | ★ 4.1 | 16 | BULK-83ecd1e4 |
| 5065 | Bulk Product fcd140a6 | Books | $663.36 | 192 | ★ 2.2 | 73 | BULK-8a79a0c3 |
| 5066 | Bulk Product 50fdcbc9 | Home & Garden | $817.26 | 235 | ★ 3.6 | 72 | BULK-4ad22546 |
| 5067 | Bulk Product 332ac89a | Clothing | $14.66 | 486 | ★ 4.0 | 57 | BULK-b90ab510 |
| 5068 | Bulk Product dfb64bd1 | Home & Garden | $544.01 | 352 | ★ 3.1 | 1 | BULK-df322d7a |
| 5069 | Bulk Product e597ad13 | Clothing | $624.13 | 283 | ★ 4.7 | 34 | BULK-281e8552 |
| 5070 | Bulk Product c70c1db1 | Clothing | $467.82 | 260 | ★ 4.6 | 79 | BULK-fcd43ce3 |
| 5071 | Bulk Product bd77fd42 | Sports & Outdoors | $663.26 | 370 | ★ 0.1 | 52 | BULK-d38ee2db |
| 5072 | Bulk Product 483b1258 | Toys & Games | $776.18 | 139 | ★ 0.7 | 30 | BULK-95cdddd9 |
| 5073 | Bulk Product bd6e7698 | Sports & Outdoors | $840.76 | 267 | ★ 1.8 | 59 | BULK-cc0d111a |
| 5074 | Bulk Product 1db076b3 | Home & Garden | $349.01 | 63 | ★ 3.2 | 58 | BULK-e2994625 |
| 5075 | Bulk Product e246d39e | Books | $682.47 | 176 | ★ 1.5 | 49 | BULK-76e4778c |
| 5076 | Bulk Product bf344029 | Electronics | $257.89 | 14 | ★ 0.9 | 62 | BULK-de9d0d49 |
| 5077 | Bulk Product b691d744 | Electronics | $88.72 | 411 | ★ 3.9 | 89 | BULK-53cc3318 |
| 5078 | Bulk Product c953ef04 | Toys & Games | $803.93 | 347 | ★ 1.4 | 67 | BULK-64c5e25f |
| 5079 | Bulk Product 001df130 | Books | $370.99 | 108 | ★ 2.4 | 91 | BULK-d1070f0f |
| 5080 | Bulk Product f345e7fd | Toys & Games | $405.10 | 257 | ★ 4.5 | 79 | BULK-6b12047a |
| 5081 | Bulk Product 870480e5 | Toys & Games | $282.14 | 36 | ★ 3.6 | 55 | BULK-e002532c |
| 5082 | Bulk Product 24c4e4fc | Books | $326.00 | 140 | ★ 4.8 | 83 | BULK-60acf56e |
| 5083 | Bulk Product 47fe305a | Electronics | $610.59 | 53 | ★ 1.6 | 89 | BULK-a4cf2e45 |
| 5084 | Bulk Product 7f0aaf8f | Home & Garden | $336.55 | 492 | ★ 4.2 | 29 | BULK-5f1a1919 |
// 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
};
}