Efficient pagination using OFFSET-FETCH on SQL Server.
| ID | Name | Category | Price | Stock | Rating | Reviews | SKU |
|---|---|---|---|---|---|---|---|
| 4566 | Ultra Books Product Pro | Books | $529.90 | 321 | ★ 4.0 | 0 | SKU-004566 |
| 4567 | Super Automotive Product Advanced | Automotive | $946.70 | 425 | ★ 3.8 | 211 | SKU-004567 |
| 4568 | Pro Health & Beauty Product Mini | Health & Beauty | $889.20 | 196 | ★ 1.4 | 609 | SKU-004568 |
| 4569 | Standard Books Product Plus | Books | $294.24 | 429 | ★ 3.7 | 728 | SKU-004569 |
| 4570 | Deluxe Sports & Outdoors Product Special Edition | Sports & Outdoors | $708.87 | 173 | ★ 3.2 | 851 | SKU-004570 |
| 4571 | Premium Electronics Product 2024 | Electronics | $271.77 | 333 | ★ 4.1 | 169 | SKU-004571 |
| 4572 | Deluxe Sports & Outdoors Product Lite | Sports & Outdoors | $737.68 | 139 | ★ 1.5 | 826 | SKU-004572 |
| 4573 | Mega Automotive Product Mini | Automotive | $922.91 | 170 | ★ 2.6 | 937 | SKU-004573 |
| 4574 | Pro Electronics Product Lite | Electronics | $211.43 | 492 | ★ 1.5 | 182 | SKU-004574 |
| 4575 | Premium Food & Grocery Product Plus | Food & Grocery | $883.44 | 273 | ★ 3.8 | 856 | SKU-004575 |
| 4576 | Deluxe Electronics Product Special Edition | Electronics | $280.06 | 486 | ★ 3.9 | 297 | SKU-004576 |
| 4577 | Deluxe Clothing Product Advanced | Clothing | $499.23 | 159 | ★ 4.7 | 91 | SKU-004577 |
| 4578 | Standard Automotive Product Plus | Automotive | $520.27 | 233 | ★ 1.9 | 174 | SKU-004578 |
| 4579 | Mega Books Product XL | Books | $879.12 | 48 | ★ 4.6 | 656 | SKU-004579 |
| 4580 | Professional Sports & Outdoors Product Lite | Sports & Outdoors | $484.96 | 30 | ★ 3.9 | 629 | SKU-004580 |
| 4581 | Standard Clothing Product Advanced | Clothing | $858.71 | 105 | ★ 5.0 | 464 | SKU-004581 |
| 4582 | Mega Electronics Product 2024 | Electronics | $324.14 | 493 | ★ 2.7 | 492 | SKU-004582 |
| 4583 | Standard Toys & Games Product Advanced | Toys & Games | $658.87 | 264 | ★ 5.0 | 283 | SKU-004583 |
| 4584 | Pro Health & Beauty Product Lite | Health & Beauty | $468.98 | 220 | ★ 2.9 | 313 | SKU-004584 |
| 4585 | Professional Sports & Outdoors Product Pro | Sports & Outdoors | $309.71 | 479 | ★ 3.4 | 306 | SKU-004585 |
| 4587 | Professional Sports & Outdoors Product Max | Sports & Outdoors | $917.01 | 208 | ★ 1.1 | 435 | SKU-004587 |
| 4588 | Pro Health & Beauty Product XL | Health & Beauty | $860.59 | 342 | ★ 3.3 | 14 | SKU-004588 |
| 4589 | Premium Automotive Product Max | Automotive | $416.91 | 116 | ★ 1.1 | 837 | SKU-004589 |
| 4590 | Economy Automotive Product Classic | Automotive | $818.26 | 81 | ★ 3.7 | 702 | SKU-004590 |
| 4592 | Professional Health & Beauty Product Special Edition | Health & Beauty | $277.79 | 132 | ★ 4.6 | 655 | SKU-004592 |
// 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
};
}