Efficient pagination using OFFSET-FETCH on SQL Server.
| ID | Name | Category | Price | Stock | Rating | Reviews | SKU |
|---|---|---|---|---|---|---|---|
| 11910 | Bulk Product c66d63db | Home & Garden | $733.95 | 363 | ★ 1.4 | 21 | BULK-7681ad48 |
| 11911 | Bulk Product 90a8e8b4 | Home & Garden | $818.98 | 210 | ★ 2.8 | 96 | BULK-5ada9560 |
| 11912 | Bulk Product cd256741 | Clothing | $690.47 | 120 | ★ 4.4 | 4 | BULK-37451666 |
| 11913 | Bulk Product a7d72602 | Electronics | $286.60 | 197 | ★ 4.8 | 15 | BULK-a3acadd4 |
| 11914 | Bulk Product 4c6edec9 | Electronics | $535.49 | 143 | ★ 3.3 | 9 | BULK-8ae2bda3 |
| 11915 | Bulk Product 72853634 | Sports & Outdoors | $60.51 | 225 | ★ 3.7 | 14 | BULK-d62c81cc |
| 11916 | Bulk Product dad0a912 | Sports & Outdoors | $918.39 | 40 | ★ 0.1 | 57 | BULK-211053b7 |
| 11917 | Bulk Product f3ba8c2e | Electronics | $571.82 | 89 | ★ 3.1 | 58 | BULK-8029f744 |
| 11918 | Bulk Product 816ee9fa | Home & Garden | $563.72 | 303 | ★ 4.8 | 45 | BULK-8114d487 |
| 11919 | Bulk Product 1e40341e | Home & Garden | $850.64 | 104 | ★ 3.7 | 85 | BULK-c13bb2ea |
| 11920 | Bulk Product cc78b167 | Electronics | $864.10 | 394 | ★ 1.7 | 10 | BULK-a380f0d4 |
| 11921 | Bulk Product 6e85f5e6 | Sports & Outdoors | $402.41 | 320 | ★ 1.4 | 64 | BULK-fb4a41ff |
| 11922 | Bulk Product d32cc209 | Sports & Outdoors | $415.80 | 232 | ★ 4.7 | 45 | BULK-8e469c04 |
| 11923 | Bulk Product d65ccba7 | Clothing | $10.79 | 178 | ★ 3.5 | 30 | BULK-7c50153f |
| 11924 | Bulk Product fffa19d2 | Sports & Outdoors | $993.02 | 39 | ★ 2.6 | 31 | BULK-a4290257 |
| 11925 | Bulk Product 9623758f | Books | $339.83 | 32 | ★ 4.3 | 91 | BULK-395250be |
| 11926 | Bulk Product 8eaab14f | Books | $955.78 | 155 | ★ 0.5 | 15 | BULK-0e68ca23 |
| 11927 | Bulk Product e3fd8b09 | Electronics | $358.64 | 356 | ★ 4.5 | 71 | BULK-812b9b00 |
| 11928 | Bulk Product 663dbe96 | Toys & Games | $848.52 | 215 | ★ 3.6 | 20 | BULK-b64dc456 |
| 11929 | Bulk Product 0ea1f7cc | Books | $800.88 | 212 | ★ 2.7 | 15 | BULK-ef83127d |
| 11930 | Bulk Product c40bb711 | Home & Garden | $290.14 | 217 | ★ 3.4 | 35 | BULK-0dd4f0f0 |
| 11931 | Bulk Product 9265571e | Clothing | $292.46 | 48 | ★ 4.0 | 60 | BULK-78eefab1 |
| 11932 | Bulk Product a291bb67 | Home & Garden | $487.20 | 482 | ★ 3.8 | 11 | BULK-a9abf34c |
| 11933 | Bulk Product eaa679f3 | Toys & Games | $109.08 | 426 | ★ 4.7 | 66 | BULK-4fd045bd |
| 11934 | Bulk Product b2fbb5a1 | Toys & Games | $710.12 | 50 | ★ 2.4 | 26 | BULK-5a83bd75 |
// 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
};
}