Efficient pagination using OFFSET-FETCH on SQL Server.
| ID | Name | Category | Price | Stock | Rating | Reviews | SKU |
|---|---|---|---|---|---|---|---|
| 4901 | Mega Food & Grocery Product Mini | Food & Grocery | $664.56 | 150 | ★ 2.9 | 436 | SKU-004901 |
| 4902 | Super Office Supplies Product Mini | Office Supplies | $720.19 | 306 | ★ 2.1 | 26 | SKU-004902 |
| 4903 | Deluxe Automotive Product Lite | Automotive | $161.26 | 378 | ★ 3.3 | 861 | SKU-004903 |
| 4905 | Elite Electronics Product Mini | Electronics | $789.65 | 323 | ★ 1.1 | 153 | SKU-004905 |
| 4907 | Super Office Supplies Product Classic | Office Supplies | $936.25 | 410 | ★ 3.7 | 510 | SKU-004907 |
| 4908 | Elite Food & Grocery Product Lite | Food & Grocery | $516.45 | 355 | ★ 2.3 | 416 | SKU-004908 |
| 4909 | Ultra Toys & Games Product XL | Toys & Games | $57.72 | 390 | ★ 2.4 | 643 | SKU-004909 |
| 4910 | Economy Clothing Product Classic | Clothing | $208.49 | 390 | ★ 4.1 | 244 | SKU-004910 |
| 4911 | Elite Books Product Advanced | Books | $987.45 | 382 | ★ 2.2 | 113 | SKU-004911 |
| 4912 | Premium Health & Beauty Product 2024 | Health & Beauty | $818.56 | 124 | ★ 1.8 | 624 | SKU-004912 |
| 4913 | Elite Electronics Product 2024 | Electronics | $991.80 | 44 | ★ 3.3 | 623 | SKU-004913 |
| 4914 | Economy Clothing Product Mini | Clothing | $814.89 | 109 | ★ 2.4 | 289 | SKU-004914 |
| 4915 | Super Office Supplies Product Classic | Office Supplies | $924.22 | 291 | ★ 3.6 | 800 | SKU-004915 |
| 4916 | Pro Electronics Product Plus | Electronics | $220.28 | 51 | ★ 2.3 | 499 | SKU-004916 |
| 4917 | Premium Food & Grocery Product Advanced | Food & Grocery | $482.90 | 182 | ★ 4.0 | 629 | SKU-004917 |
| 4918 | Standard Sports & Outdoors Product Advanced | Sports & Outdoors | $256.09 | 320 | ★ 2.2 | 446 | SKU-004918 |
| 4921 | Ultra Food & Grocery Product Lite | Food & Grocery | $589.57 | 299 | ★ 4.6 | 910 | SKU-004921 |
| 4922 | Pro Food & Grocery Product Lite | Food & Grocery | $815.88 | 32 | ★ 1.8 | 636 | SKU-004922 |
| 4923 | Pro Sports & Outdoors Product Max | Sports & Outdoors | $467.43 | 352 | ★ 1.8 | 868 | SKU-004923 |
| 4924 | Professional Clothing Product Lite | Clothing | $338.95 | 48 | ★ 2.0 | 883 | SKU-004924 |
| 4925 | Elite Clothing Product 2024 | Clothing | $493.27 | 455 | ★ 4.3 | 569 | SKU-004925 |
| 4926 | Pro Home & Garden Product Lite | Home & Garden | $952.21 | 379 | ★ 2.1 | 394 | SKU-004926 |
| 4927 | Ultra Clothing Product 2024 | Clothing | $80.57 | 498 | ★ 3.1 | 995 | SKU-004927 |
| 4928 | Pro Toys & Games Product Advanced | Toys & Games | $130.81 | 348 | ★ 2.0 | 687 | SKU-004928 |
| 4929 | Elite Home & Garden Product Classic | Home & Garden | $25.84 | 474 | ★ 1.2 | 131 | SKU-004929 |
// 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
};
}