Efficient pagination using OFFSET-FETCH on SQL Server.
| ID | Name | Category | Price | Stock | Rating | Reviews | SKU |
|---|---|---|---|---|---|---|---|
| 13135 | Bulk Product ab842db9 | Toys & Games | $973.26 | 441 | ★ 1.9 | 60 | BULK-5aa54c6b |
| 13136 | Bulk Product 29f6ec19 | Books | $59.56 | 475 | ★ 3.2 | 15 | BULK-ed6c1ffa |
| 13137 | Bulk Product afb87fe3 | Books | $23.52 | 298 | ★ 1.2 | 29 | BULK-3ed94796 |
| 13138 | Bulk Product 1c101f60 | Sports & Outdoors | $888.04 | 473 | ★ 4.7 | 98 | BULK-e9f0d88e |
| 13139 | Bulk Product 52a968ae | Clothing | $152.07 | 258 | ★ 4.9 | 47 | BULK-e9d2271c |
| 13140 | Bulk Product 147424c4 | Home & Garden | $418.27 | 349 | ★ 0.2 | 75 | BULK-694cd527 |
| 13141 | Bulk Product 48519364 | Electronics | $236.55 | 457 | ★ 3.2 | 33 | BULK-567d3a8c |
| 13142 | Bulk Product 837bf542 | Home & Garden | $703.87 | 291 | ★ 4.5 | 67 | BULK-1b07bd7f |
| 13143 | Bulk Product 8600084c | Home & Garden | $587.62 | 115 | ★ 3.0 | 52 | BULK-fd3526bb |
| 13144 | Bulk Product d41bfe3c | Toys & Games | $307.58 | 184 | ★ 3.7 | 51 | BULK-2ae9b87d |
| 13145 | Bulk Product 38406174 | Books | $471.88 | 454 | ★ 3.2 | 34 | BULK-00673b36 |
| 13146 | Bulk Product a0fa0001 | Electronics | $752.35 | 438 | ★ 0.5 | 4 | BULK-7f5ccae8 |
| 13147 | Bulk Product d924bf66 | Clothing | $454.92 | 221 | ★ 3.9 | 79 | BULK-7ef0ae50 |
| 13148 | Bulk Product bf13630f | Electronics | $391.03 | 60 | ★ 4.2 | 97 | BULK-a12fe0e2 |
| 13149 | Bulk Product 8c0b5de1 | Home & Garden | $978.23 | 360 | ★ 2.6 | 72 | BULK-1f66ce86 |
| 13150 | Bulk Product 6d2abb96 | Electronics | $367.78 | 237 | ★ 1.8 | 20 | BULK-4114543c |
| 13151 | Bulk Product 06507747 | Electronics | $239.64 | 218 | ★ 3.5 | 31 | BULK-45a4b1f2 |
| 13152 | Bulk Product 667dc924 | Toys & Games | $441.64 | 329 | ★ 4.7 | 97 | BULK-beca9e81 |
| 13153 | Bulk Product 72e5536f | Clothing | $668.17 | 406 | ★ 4.8 | 56 | BULK-f8d03b49 |
| 13154 | Bulk Product 3913ab40 | Sports & Outdoors | $197.25 | 451 | ★ 0.5 | 46 | BULK-ea66b487 |
| 13155 | Bulk Product 43ef43f8 | Books | $681.48 | 206 | ★ 3.9 | 26 | BULK-86e96867 |
| 13156 | Bulk Product a65b3697 | Electronics | $782.74 | 121 | ★ 1.0 | 95 | BULK-c1420016 |
| 13157 | Bulk Product d3211524 | Electronics | $349.07 | 251 | ★ 0.8 | 6 | BULK-7ffddcb0 |
| 13158 | Bulk Product 14175222 | Electronics | $409.69 | 156 | ★ 0.6 | 84 | BULK-c3eb3f87 |
| 13159 | Bulk Product b9dfd973 | Sports & Outdoors | $91.00 | 177 | ★ 3.2 | 48 | BULK-d2ed8028 |
// 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
};
}