Efficient pagination using OFFSET-FETCH on SQL Server.
| ID | Name | Category | Price | Stock | Rating | Reviews | SKU |
|---|---|---|---|---|---|---|---|
| 415 | Deluxe Office Supplies Product Classic | Office Supplies | $380.05 | 290 | ★ 2.3 | 747 | SKU-000415 |
| 417 | Premium Health & Beauty Product 2024 | Health & Beauty | $962.68 | 381 | ★ 3.7 | 18 | SKU-000417 |
| 418 | Super Office Supplies Product XL | Office Supplies | $526.83 | 423 | ★ 1.5 | 881 | SKU-000418 |
| 419 | Economy Electronics Product Special Edition | Electronics | $715.88 | 361 | ★ 4.3 | 972 | SKU-000419 |
| 421 | Economy Home & Garden Product Plus | Home & Garden | $996.91 | 340 | ★ 1.4 | 978 | SKU-000421 |
| 422 | Standard Toys & Games Product Classic | Toys & Games | $847.38 | 102 | ★ 1.0 | 691 | SKU-000422 |
| 424 | Standard Automotive Product Pro | Automotive | $403.93 | 168 | ★ 3.2 | 757 | SKU-000424 |
| 426 | Elite Clothing Product Advanced | Clothing | $354.63 | 216 | ★ 2.7 | 320 | SKU-000426 |
| 427 | Elite Toys & Games Product XL | Toys & Games | $101.48 | 204 | ★ 1.8 | 600 | SKU-000427 |
| 428 | Deluxe Home & Garden Product Advanced | Home & Garden | $791.45 | 257 | ★ 4.9 | 236 | SKU-000428 |
| 429 | Elite Automotive Product Pro | Automotive | $525.05 | 446 | ★ 1.4 | 37 | SKU-000429 |
| 430 | Pro Electronics Product Lite | Electronics | $496.63 | 469 | ★ 3.6 | 982 | SKU-000430 |
| 431 | Ultra Sports & Outdoors Product Advanced | Sports & Outdoors | $183.86 | 413 | ★ 2.9 | 85 | SKU-000431 |
| 432 | Mega Health & Beauty Product Advanced | Health & Beauty | $554.43 | 164 | ★ 3.1 | 912 | SKU-000432 |
| 433 | Pro Home & Garden Product Mini | Home & Garden | $950.25 | 376 | ★ 4.3 | 635 | SKU-000433 |
| 434 | Premium Office Supplies Product Classic | Office Supplies | $848.24 | 82 | ★ 3.0 | 847 | SKU-000434 |
| 435 | Professional Food & Grocery Product Lite | Food & Grocery | $96.80 | 219 | ★ 2.8 | 279 | SKU-000435 |
| 436 | Mega Food & Grocery Product Special Edition | Food & Grocery | $657.22 | 438 | ★ 1.5 | 843 | SKU-000436 |
| 438 | Mega Sports & Outdoors Product Max | Sports & Outdoors | $238.80 | 182 | ★ 1.0 | 324 | SKU-000438 |
| 440 | Premium Health & Beauty Product Advanced | Health & Beauty | $753.49 | 139 | ★ 1.9 | 412 | SKU-000440 |
| 443 | Standard Electronics Product Special Edition | Electronics | $575.64 | 105 | ★ 2.7 | 720 | SKU-000443 |
| 444 | Premium Clothing Product Advanced | Clothing | $645.05 | 446 | ★ 4.4 | 624 | SKU-000444 |
| 445 | Standard Sports & Outdoors Product Special Edition | Sports & Outdoors | $654.70 | 284 | ★ 4.6 | 251 | SKU-000445 |
| 446 | Standard Home & Garden Product Max | Home & Garden | $814.15 | 411 | ★ 3.8 | 894 | SKU-000446 |
| 447 | Super Health & Beauty Product Max | Health & Beauty | $890.18 | 322 | ★ 4.1 | 921 | SKU-000447 |
// 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
};
}