Efficient pagination using OFFSET-FETCH on SQL Server.
| ID | Name | Category | Price | Stock | Rating | Reviews | SKU |
|---|---|---|---|---|---|---|---|
| 9910 | Bulk Product 797ec522 | Electronics | $434.20 | 71 | ★ 1.3 | 72 | BULK-cfb7b6d5 |
| 9911 | Bulk Product 3c60ecb8 | Sports & Outdoors | $354.74 | 401 | ★ 4.2 | 63 | BULK-12c26eeb |
| 9912 | Bulk Product b5c060f1 | Books | $245.42 | 121 | ★ 2.5 | 57 | BULK-c9e870ec |
| 9913 | Bulk Product 8bb720c4 | Sports & Outdoors | $549.71 | 386 | ★ 4.0 | 56 | BULK-40c867ad |
| 9914 | Bulk Product 995d4509 | Clothing | $798.40 | 298 | ★ 1.1 | 28 | BULK-8b1bda7c |
| 9915 | Bulk Product b44460ba | Books | $989.30 | 87 | ★ 1.1 | 5 | BULK-ae1f9538 |
| 9916 | Bulk Product e17fb79b | Electronics | $1,006.23 | 253 | ★ 3.4 | 39 | BULK-6d5f4dd6 |
| 9917 | Bulk Product 5a030437 | Sports & Outdoors | $852.95 | 289 | ★ 1.4 | 12 | BULK-92b5674b |
| 9918 | Bulk Product 815458d2 | Home & Garden | $899.31 | 109 | ★ 1.4 | 17 | BULK-7faedec9 |
| 9919 | Bulk Product 879f746d | Toys & Games | $573.45 | 21 | ★ 2.0 | 97 | BULK-c406f834 |
| 9920 | Bulk Product dafd158f | Electronics | $117.03 | 303 | ★ 2.9 | 52 | BULK-23c46932 |
| 9921 | Bulk Product 468ea3e1 | Toys & Games | $131.57 | 436 | ★ 3.7 | 62 | BULK-1554bdeb |
| 9922 | Bulk Product 3f684e05 | Books | $41.24 | 41 | ★ 2.0 | 85 | BULK-db92ed34 |
| 9923 | Bulk Product 8e15a2af | Sports & Outdoors | $152.70 | 47 | ★ 2.6 | 85 | BULK-5c692af6 |
| 9924 | Bulk Product 66d8a505 | Books | $915.27 | 104 | ★ 2.2 | 9 | BULK-b7bd9d09 |
| 9925 | Bulk Product 1bc108c2 | Toys & Games | $1,002.27 | 94 | ★ 2.7 | 43 | BULK-9da15ae5 |
| 9926 | Bulk Product 4e39f8d9 | Sports & Outdoors | $862.45 | 285 | ★ 4.6 | 54 | BULK-d94ace2f |
| 9927 | Bulk Product 9dbac92f | Electronics | $848.80 | 41 | ★ 2.9 | 94 | BULK-fc3e4c1f |
| 9928 | Bulk Product 01d5db1c | Home & Garden | $425.87 | 351 | ★ 1.0 | 85 | BULK-0a9e169c |
| 9929 | Bulk Product a1d2531e | Home & Garden | $85.61 | 105 | ★ 3.5 | 70 | BULK-3ab9c7a5 |
| 9930 | Bulk Product 91b5a8f3 | Toys & Games | $497.07 | 469 | ★ 3.3 | 58 | BULK-72fe443b |
| 9931 | Bulk Product 9da15ae5 | Home & Garden | $585.86 | 238 | ★ 0.8 | 44 | BULK-8e891537 |
| 9932 | Bulk Product abb6ec0b | Electronics | $124.86 | 412 | ★ 2.7 | 49 | BULK-550e1275 |
| 9933 | Bulk Product 75b1d6b6 | Home & Garden | $658.02 | 262 | ★ 2.2 | 38 | BULK-aadbb4b8 |
| 9934 | Bulk Product b1fa7dd1 | Toys & Games | $569.58 | 84 | ★ 0.6 | 44 | BULK-5eaa762b |
// 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
};
}