public async Task <PageModelDto <CfgDto> > GetPagedAsync(CfgSearchPagedDto search) { var whereExpression = ExpressionCreator .New <SysCfg>() .AndIf(search.Name.IsNotNullOrWhiteSpace(), x => EF.Functions.Like(x.Name, $"{search.Name}%")) .AndIf(search.Value.IsNotNullOrWhiteSpace(), x => EF.Functions.Like(x.Value, $"{search.Value}%")); var total = await _cfgRepository.CountAsync(whereExpression); if (total == 0) { return(new PageModelDto <CfgDto>(search)); } var entities = await _cfgRepository .Where(whereExpression) .OrderByDescending(x => x.ModifyTime) .Skip(search.SkipRows()) .Take(search.PageSize) .ToListAsync(); var cfgDtos = Mapper.Map <List <CfgDto> >(entities); return(new PageModelDto <CfgDto>(search, cfgDtos, total)); }
public async Task <PageModelDto <CfgDto> > GetPagedAsync(CfgSearchPagedDto search) { Expression <Func <CfgDto, bool> > whereCondition = x => true; if (search.Name.IsNotNullOrWhiteSpace()) { whereCondition = whereCondition.And(x => x.Name.Contains(search.Name)); } if (search.Value.IsNotNullOrWhiteSpace()) { whereCondition = whereCondition.And(x => x.Value.Contains(search.Value)); } var allCfgs = await _cacheService.GetAllCfgsFromCacheAsync(); var pagedCfgs = allCfgs.Where(whereCondition.Compile()) .OrderByDescending(x => x.CreateTime) .Skip((search.PageIndex - 1) * search.PageSize) .Take(search.PageSize) .ToArray(); var result = new PageModelDto <CfgDto>() { Data = pagedCfgs , TotalCount = allCfgs.Count , PageIndex = search.PageIndex , PageSize = search.PageSize }; return(result); }
public async Task <ActionResult <PageModelDto <CfgDto> > > GetPagedAsync([FromQuery] CfgSearchPagedDto search) { return(Result(await _cfgAppService.GetPagedAsync(search))); }