Efficient pagination using OFFSET-FETCH on SQL Server.
| ID | Name | Category | Price | Stock | Rating | Reviews | SKU |
|---|---|---|---|---|---|---|---|
| 114 | Pro Office Supplies Product Special Edition | Office Supplies | $23.00 | 368 | ★ 4.7 | 506 | SKU-000114 |
| 116 | Elite Sports & Outdoors Product Classic | Sports & Outdoors | $227.59 | 419 | ★ 1.8 | 205 | SKU-000116 |
| 117 | Mega Electronics Product Special Edition | Electronics | $511.59 | 169 | ★ 5.0 | 653 | SKU-000117 |
| 118 | Deluxe Sports & Outdoors Product Special Edition | Sports & Outdoors | $339.35 | 398 | ★ 1.3 | 65 | SKU-000118 |
| 120 | Ultra Sports & Outdoors Product Special Edition | Sports & Outdoors | $78.73 | 212 | ★ 2.6 | 79 | SKU-000120 |
| 121 | Pro Toys & Games Product Special Edition | Toys & Games | $710.60 | 140 | ★ 1.5 | 746 | SKU-000121 |
| 123 | Pro Office Supplies Product Plus | Office Supplies | $531.52 | 184 | ★ 2.5 | 442 | SKU-000123 |
| 124 | Elite Home & Garden Product Classic | Home & Garden | $199.04 | 143 | ★ 2.8 | 339 | SKU-000124 |
| 125 | Elite Food & Grocery Product Advanced | Food & Grocery | $614.38 | 19 | ★ 1.0 | 51 | SKU-000125 |
| 126 | Mega Toys & Games Product Advanced | Toys & Games | $631.43 | 224 | ★ 1.3 | 677 | SKU-000126 |
| 127 | Super Toys & Games Product Advanced | Toys & Games | $220.16 | 268 | ★ 2.4 | 125 | SKU-000127 |
| 128 | Super Books Product 2024 | Books | $349.65 | 179 | ★ 2.0 | 148 | SKU-000128 |
| 129 | Pro Home & Garden Product Classic | Home & Garden | $313.20 | 31 | ★ 2.2 | 498 | SKU-000129 |
| 130 | Professional Automotive Product Lite | Automotive | $140.82 | 465 | ★ 1.3 | 379 | SKU-000130 |
| 131 | Pro Health & Beauty Product Classic | Health & Beauty | $465.54 | 71 | ★ 3.2 | 474 | SKU-000131 |
| 132 | Super Home & Garden Product XL | Home & Garden | $90.60 | 478 | ★ 1.1 | 137 | SKU-000132 |
| 133 | Deluxe Clothing Product Mini | Clothing | $174.34 | 32 | ★ 3.4 | 597 | SKU-000133 |
| 134 | Premium Sports & Outdoors Product Lite | Sports & Outdoors | $270.22 | 347 | ★ 3.5 | 540 | SKU-000134 |
| 135 | Premium Electronics Product Mini | Electronics | $728.45 | 254 | ★ 4.4 | 210 | SKU-000135 |
| 136 | Elite Sports & Outdoors Product Pro | Sports & Outdoors | $561.72 | 381 | ★ 3.2 | 728 | SKU-000136 |
| 137 | Economy Clothing Product Lite | Clothing | $599.35 | 134 | ★ 2.4 | 781 | SKU-000137 |
| 138 | Standard Books Product Pro | Books | $933.31 | 121 | ★ 4.8 | 964 | SKU-000138 |
| 139 | Professional Home & Garden Product Pro | Home & Garden | $756.02 | 255 | ★ 1.5 | 645 | SKU-000139 |
| 141 | Super Home & Garden Product Lite | Home & Garden | $171.89 | 219 | ★ 1.6 | 151 | SKU-000141 |
| 142 | Economy Health & Beauty Product Advanced | Health & Beauty | $95.15 | 399 | ★ 1.9 | 41 | SKU-000142 |
// 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
};
}