Efficient pagination using OFFSET-FETCH on SQL Server.
| ID | Name | Category | Price | Stock | Rating | Reviews | SKU |
|---|---|---|---|---|---|---|---|
| 7810 | Bulk Product a39dba02 | Home & Garden | $129.87 | 158 | ★ 3.3 | 91 | BULK-1cf57d42 |
| 7811 | Bulk Product 4fd7862b | Home & Garden | $422.71 | 246 | ★ 3.0 | 90 | BULK-52ce0bfa |
| 7812 | Bulk Product d4204f83 | Books | $743.38 | 316 | ★ 5.0 | 96 | BULK-47ed5897 |
| 7813 | Bulk Product e966f337 | Sports & Outdoors | $744.65 | 51 | ★ 1.0 | 22 | BULK-73425969 |
| 7814 | Bulk Product d1cbbbc7 | Clothing | $506.81 | 109 | ★ 2.6 | 69 | BULK-e7878b70 |
| 7815 | Bulk Product b6135701 | Electronics | $628.55 | 316 | ★ 1.3 | 73 | BULK-01cfaad2 |
| 7816 | Bulk Product bdce91c3 | Sports & Outdoors | $422.71 | 112 | ★ 4.6 | 53 | BULK-d84d7455 |
| 7817 | Bulk Product d2fe56f8 | Books | $989.34 | 69 | ★ 4.9 | 18 | BULK-c4fd507c |
| 7818 | Bulk Product abdfd9fa | Books | $254.28 | 53 | ★ 3.4 | 5 | BULK-a212fb9a |
| 7819 | Bulk Product 98e3167b | Toys & Games | $970.59 | 44 | ★ 4.7 | 54 | BULK-055233bb |
| 7820 | Bulk Product 90ca5452 | Toys & Games | $459.45 | 479 | ★ 4.1 | 69 | BULK-3a3aa484 |
| 7821 | Bulk Product a0482d5c | Clothing | $687.97 | 417 | ★ 1.2 | 34 | BULK-95b57efc |
| 7822 | Bulk Product db578f1c | Sports & Outdoors | $275.94 | 141 | ★ 4.0 | 70 | BULK-a845d8d0 |
| 7823 | Bulk Product 625883c3 | Books | $112.17 | 85 | ★ 4.2 | 3 | BULK-f9313460 |
| 7824 | Bulk Product 51b4a6ea | Toys & Games | $706.83 | 302 | ★ 2.7 | 35 | BULK-bae6605e |
| 7825 | Bulk Product 6981f79f | Clothing | $999.73 | 456 | ★ 3.5 | 54 | BULK-c131c74c |
| 7826 | Bulk Product b3d25a77 | Clothing | $882.83 | 237 | ★ 0.1 | 63 | BULK-6b0af0e7 |
| 7827 | Bulk Product 1fc78970 | Sports & Outdoors | $42.32 | 220 | ★ 4.9 | 27 | BULK-34f17e25 |
| 7828 | Bulk Product df3e39fc | Home & Garden | $268.17 | 123 | ★ 1.6 | 31 | BULK-832c8a0c |
| 7829 | Bulk Product 923612ed | Clothing | $397.47 | 288 | ★ 3.4 | 71 | BULK-affde053 |
| 7830 | Bulk Product 484f8b28 | Electronics | $261.95 | 490 | ★ 3.1 | 13 | BULK-95d613dd |
| 7831 | Bulk Product 2c9bdd3a | Books | $996.70 | 248 | ★ 4.8 | 17 | BULK-aac08a0b |
| 7832 | Bulk Product c66933c2 | Electronics | $418.47 | 414 | ★ 0.9 | 47 | BULK-b430b4af |
| 7833 | Bulk Product ec7f4a2b | Toys & Games | $170.46 | 295 | ★ 1.2 | 64 | BULK-b2ac5b81 |
| 7834 | Bulk Product 59074f12 | Home & Garden | $698.71 | 189 | ★ 4.8 | 94 | BULK-f3251ebb |
// 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
};
}