public async Task GetItemsOffsetPaging(PagingOffsetArgs args) { var watch = System.Diagnostics.Stopwatch.StartNew(); var query = _demoDbContext.Items; _itemsOffsetPagingLoading.OnNext(true); _itemsOffsetPaging.OnNext(new PagingOffsetData { Items = await query.OrderBy(x => x.CreateDate) .Skip(args.PageIndex * args.PageSize) .Take(args.PageSize).ToListAsync(), Total = await query.CountAsync() }); watch.Stop(); _execTime.OnNext($"Execution Time: {watch.ElapsedMilliseconds} ms"); _itemsOffsetPagingLoading.OnNext(false); }
public async Task GetItemsOffsetPagingOptimized(PagingOffsetArgs args) { var watch = System.Diagnostics.Stopwatch.StartNew(); var query = _demoDbContext.Items; Expression <Func <Item, bool> > whereExp = (Item item) => query .OrderBy(x => x.CreateDate) .Select(y => y.Id) .Skip(args.PageIndex * args.PageSize) .Take(args.PageSize).Contains(item.Id); _itemsOffsetPagingOptLoading.OnNext(true); _itemsOffsetPagingOpt.OnNext(new PagingOffsetData { Items = await query.Where(whereExp).ToListAsync(), Total = await query.CountAsync() }); watch.Stop(); _execTime.OnNext($"Execution Time: {watch.ElapsedMilliseconds} ms"); _itemsOffsetPagingOptLoading.OnNext(false); }