Efficient pagination using OFFSET-FETCH on SQL Server.
| ID | Name | Category | Price | Stock | Rating | Reviews | SKU |
|---|---|---|---|---|---|---|---|
| 15060 | Bulk Product 7e14b878 | Sports & Outdoors | $540.89 | 44 | ★ 2.1 | 60 | BULK-6b20b79e |
| 15061 | Bulk Product 7ac8635c | Home & Garden | $689.99 | 415 | ★ 2.3 | 62 | BULK-300a834e |
| 15062 | Bulk Product ea2fa4bc | Toys & Games | $13.36 | 170 | ★ 4.5 | 74 | BULK-55b98c36 |
| 15063 | Bulk Product 852a3438 | Home & Garden | $759.73 | 148 | ★ 4.4 | 54 | BULK-402a5b06 |
| 15064 | Bulk Product 017006ce | Toys & Games | $574.98 | 20 | ★ 3.2 | 1 | BULK-54c79f6e |
| 15065 | Bulk Product a4b641e6 | Toys & Games | $249.32 | 160 | ★ 3.7 | 25 | BULK-733aa3e3 |
| 15066 | Bulk Product 6e98f22f | Toys & Games | $758.29 | 129 | ★ 1.7 | 60 | BULK-2b2d0106 |
| 15067 | Bulk Product 040ec003 | Home & Garden | $396.62 | 80 | ★ 1.7 | 83 | BULK-31824bbc |
| 15068 | Bulk Product 52733a2c | Sports & Outdoors | $421.76 | 422 | ★ 2.5 | 6 | BULK-d62cc501 |
| 15069 | Bulk Product 1c130665 | Sports & Outdoors | $750.31 | 53 | ★ 1.3 | 2 | BULK-a4aa3f64 |
| 15070 | Bulk Product bf920fd8 | Home & Garden | $983.52 | 482 | ★ 1.1 | 54 | BULK-99447581 |
| 15071 | Bulk Product a42308a6 | Toys & Games | $424.34 | 356 | ★ 2.6 | 61 | BULK-68f21285 |
| 15072 | Bulk Product 3a941213 | Sports & Outdoors | $679.76 | 216 | ★ 2.3 | 53 | BULK-f529ed41 |
| 15073 | Bulk Product 2a8d16db | Toys & Games | $125.52 | 84 | ★ 0.8 | 61 | BULK-d60362c5 |
| 15074 | Bulk Product 291a711c | Sports & Outdoors | $39.07 | 267 | ★ 4.0 | 66 | BULK-42b41af5 |
| 15075 | Bulk Product aa37114f | Toys & Games | $84.74 | 324 | ★ 2.6 | 58 | BULK-02531601 |
| 15076 | Bulk Product 9a165639 | Clothing | $963.80 | 206 | ★ 1.3 | 98 | BULK-73588520 |
| 15077 | Bulk Product 50ea8796 | Books | $221.09 | 34 | ★ 1.4 | 13 | BULK-c08146b3 |
| 15078 | Bulk Product 52f7e7d3 | Books | $527.92 | 291 | ★ 0.6 | 26 | BULK-5c2469d1 |
| 15079 | Bulk Product 3d53934a | Home & Garden | $128.46 | 444 | ★ 0.0 | 28 | BULK-3637522c |
| 15080 | Bulk Product 4c39a1e0 | Home & Garden | $481.52 | 270 | ★ 4.3 | 55 | BULK-bc6f7320 |
| 15081 | Bulk Product 88a19787 | Electronics | $800.49 | 386 | ★ 1.2 | 85 | BULK-065892be |
| 15082 | Bulk Product 7b2a178e | Clothing | $893.34 | 411 | ★ 4.5 | 82 | BULK-1a4c81c3 |
| 15083 | Bulk Product 5cac59bd | Books | $187.70 | 298 | ★ 2.7 | 17 | BULK-2b452b56 |
| 15084 | Bulk Product e0ee2fcf | Toys & Games | $528.48 | 51 | ★ 3.2 | 72 | BULK-c0560ecb |
// 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
};
}