private IQueryable <BD_Standard> CreateStandardsQuery(GetStandardsInput input) { var query = _standardRepository.GetAll() .Include(s => s.Installation) .Where(s => s.ValidateDate >= input.ValidateDate && s.StrType == input.StrType); query = query .WhereIf(input.Installation_ID > 0, item => item.Installation_ID == input.Installation_ID) //所属计量装置ID -->精确查询 .WhereIf(!input.FactoryNum.IsNullOrWhiteSpace(), item => item.FactoryNum.Contains(input.FactoryNum)) //出厂编号 -->模糊查询 .WhereIf(!input.StrName.IsNullOrWhiteSpace(), item => item.StrName.Contains(input.StrName)) //标准器名称 .WhereIf(!input.StrSpec.IsNullOrWhiteSpace(), item => item.StrSpec.Contains(input.StrSpec)); //标准器型号 return(query); }
/// <summary> /// 过滤,排序,分页 获取标准器列表 /// </summary> /// <param name="input"></param> /// <returns></returns> public async Task <PagedResultDto <StandardListDto> > GetStandards(GetStandardsInput input) { var query = CreateStandardsQuery(input); //Step 01 var resultCount = await query.CountAsync(); //Step 02 var results = await query .AsNoTracking() .OrderBy(input.Sorting) /*Exp: using System.Linq.Dynamic;*/ .PageBy(input) .ToListAsync(); var standardListDtos = results.MapTo <List <StandardListDto> >(); //Step 03 return(new PagedResultDto <StandardListDto>(resultCount, standardListDtos)); //Step 04 }