private IQueryable <InTstListDto> CreateInTstsQuery(GetInstrumentTestsInput input) { var reInstruments = _receiveInstrumentRepository.GetAllIncluding(q => q.Instrument); var inTsts = _instrumentTestRepository.GetAll().Include(q => q.ReceiveInstrument).Include(q => q.User); var query = from re in reInstruments join inTst in inTsts on re.Id equals inTst.ReceiveInstrument_ID select new InTstListDto { Id = inTst.Id, InstrumentName = re.Instrument.Name, Number = inTst.Number, CheckType = inTst.CheckType.CheckName, CheckTypeId = inTst.CheckType.Id, CaliValidate = inTst.CaliValidate, IntHandover = inTst.IntHandover, User = inTst.UserId == null ? "暂无" : inTst.User.UserName, UserId = inTst.UserId, Calibration = inTst.Calibration, CaliU = inTst.CaliU, Address = inTst.Address, StrFlag = inTst.StrFlag, CreationTime = inTst.CreationTime }; query = query //--查询过滤 Begin .Where(q => q.IntHandover == input.IntHandover) //是否交接? .WhereIf(input.CheckTypeId > 0, item => item.CheckTypeId == input.CheckTypeId) //检测类型 .WhereIf(input.UserId > 0, item => item.UserId == input.UserId) //接收用户 .WhereIf(!input.Number.IsNullOrWhiteSpace(), item => item.Number.Contains(input.Number)) //仪器编号 .WhereIf(!input.Address.IsNullOrWhiteSpace(), item => item.Address.Contains(input.Address)); //实验地址 return(query); }
//5.2 获取已经登记的仪器列表 用于交接挑选,带分页 public async Task <PagedResultDto <InTstListDto> > GetInstrumentTestsForHandOver(GetInstrumentTestsInput input) { var query = CreateInTstsQuery(input); //Step 01 var resultCount = await query.CountAsync(); //Step 02 var inTstListDtos = await query .AsNoTracking() .OrderBy(input.Sorting) /*Exp: using System.Linq.Dynamic;*/ .PageBy(input) .ToListAsync(); return(new PagedResultDto <InTstListDto>(resultCount, inTstListDtos)); //Step 03 }