Efficient pagination using OFFSET-FETCH on SQL Server.
| ID | Name | Category | Price | Stock | Rating | Reviews | SKU |
|---|---|---|---|---|---|---|---|
| 3054 | Deluxe Electronics Product 2024 | Electronics | $253.36 | 159 | ★ 2.2 | 456 | SKU-003054 |
| 3055 | Elite Electronics Product Lite | Electronics | $330.72 | 198 | ★ 3.4 | 274 | SKU-003055 |
| 3056 | Super Food & Grocery Product Advanced | Food & Grocery | $255.66 | 279 | ★ 2.6 | 650 | SKU-003056 |
| 3057 | Deluxe Electronics Product 2024 | Electronics | $58.64 | 225 | ★ 3.6 | 338 | SKU-003057 |
| 3058 | Economy Health & Beauty Product XL | Health & Beauty | $950.15 | 305 | ★ 2.7 | 569 | SKU-003058 |
| 3059 | Standard Toys & Games Product Advanced | Toys & Games | $602.59 | 357 | ★ 2.0 | 741 | SKU-003059 |
| 3060 | Super Clothing Product Plus | Clothing | $40.92 | 205 | ★ 1.3 | 507 | SKU-003060 |
| 3061 | Mega Toys & Games Product Classic | Toys & Games | $148.99 | 452 | ★ 2.4 | 966 | SKU-003061 |
| 3062 | Economy Office Supplies Product Pro | Office Supplies | $287.42 | 383 | ★ 3.5 | 129 | SKU-003062 |
| 3064 | Mega Food & Grocery Product Advanced | Food & Grocery | $792.70 | 389 | ★ 3.1 | 152 | SKU-003064 |
| 3065 | Ultra Clothing Product Classic | Clothing | $813.37 | 451 | ★ 4.0 | 323 | SKU-003065 |
| 3066 | Deluxe Clothing Product Pro | Clothing | $587.97 | 317 | ★ 2.1 | 350 | SKU-003066 |
| 3067 | Standard Health & Beauty Product Max | Health & Beauty | $142.22 | 281 | ★ 3.8 | 111 | SKU-003067 |
| 3068 | Super Sports & Outdoors Product Plus | Sports & Outdoors | $332.07 | 173 | ★ 5.0 | 544 | SKU-003068 |
| 3070 | Deluxe Health & Beauty Product XL | Health & Beauty | $808.78 | 162 | ★ 1.6 | 277 | SKU-003070 |
| 3071 | Professional Books Product Pro | Books | $460.34 | 60 | ★ 4.3 | 751 | SKU-003071 |
| 3072 | Pro Home & Garden Product Classic | Home & Garden | $956.76 | 36 | ★ 2.7 | 723 | SKU-003072 |
| 3073 | Professional Office Supplies Product Advanced | Office Supplies | $627.88 | 281 | ★ 4.6 | 839 | SKU-003073 |
| 3074 | Ultra Food & Grocery Product Plus | Food & Grocery | $588.00 | 9 | ★ 2.5 | 817 | SKU-003074 |
| 3075 | Standard Automotive Product Special Edition | Automotive | $113.85 | 475 | ★ 3.8 | 152 | SKU-003075 |
| 3076 | Pro Electronics Product Max | Electronics | $96.93 | 490 | ★ 4.5 | 80 | SKU-003076 |
| 3078 | Ultra Books Product Lite | Books | $804.45 | 287 | ★ 1.7 | 854 | SKU-003078 |
| 3079 | Standard Electronics Product Classic | Electronics | $382.74 | 214 | ★ 3.2 | 865 | SKU-003079 |
| 3080 | Ultra Home & Garden Product 2024 | Home & Garden | $643.65 | 299 | ★ 3.9 | 663 | SKU-003080 |
| 3081 | Elite Food & Grocery Product Classic | Food & Grocery | $137.11 | 43 | ★ 4.2 | 959 | SKU-003081 |
// 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
};
}