示例#1
0
        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);
        }
示例#2
0
        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);
        }