//public async Task<List<Student>> GetPaginatedResult(int currentPage, string searchString, string sortBy, int pageSize = 10) //{ // var query = _studentRepository.GetAll(); // if (!string.IsNullOrEmpty(searchString)) // { // query = query.Where(s => s.Name.Contains(searchString) || s.Email.Contains(searchString)); // } // query = query.OrderBy(sortBy); // return await query.Skip((currentPage - 1) * pageSize).Take(pageSize).AsNoTracking().ToListAsync(); //} public async Task <PageResultDto <Student> > GetPaginatedResult(GetStudentInput input) { var query = _studentRepository.GetAll(); if (!string.IsNullOrEmpty(input.FilterText)) { query = query.Where(s => s.Name.Contains(input.FilterText) || s.Email.Contains(input.FilterText)); } var count = query.Count(); query = query.OrderBy(input.Sorting).Skip((input.CurrentPage - 1) * input.MaxResultCount).Take(input.MaxResultCount); var models = await query.AsNoTracking().ToListAsync(); var dtos = new PageResultDto <Student> { TotalCount = count, CurrentPage = input.CurrentPage, MaxResultCount = input.MaxResultCount, Data = models, FilterText = input.FilterText, Sorting = input.Sorting }; return(dtos); }
public async Task <PagedResultDto <Student> > GetPaginatedResult(GetStudentInput input) { var query = _studentRepository.GetAll(); //判断输入的搜索名称是否为空 if (!string.IsNullOrEmpty(input.FilterText)) { query = query.Where(s => s.Name.Contains(input.FilterText) || s.Email.Contains(input.FilterText)); } //统计查询数据的总条数,用于分页计算总页数 var count = query.Count(); //根据需求进行排序,然后进行分页逻辑的计算 query = query.OrderBy(input.Sorting).Skip((input.CurrentPage - 1) * input.MaxResultCount).Take(input.MaxResultCount); //将查询结果转换为List集合,加载到内存中 var models = await query.AsNoTracking().ToListAsync(); var dtos = new PagedResultDto <Student> { TotalCount = count, CurrentPage = input.CurrentPage, MaxResultCount = input.MaxResultCount, Data = models, FilterText = input.FilterText, Sorting = input.Sorting }; return(dtos); }
public async Task <IActionResult> Index(GetStudentInput input) { var dtos = await _studentService.GetPaginatedResult(input); dtos.Data = dtos.Data.Select(s => { s.EncryptedId = _protector.Protect(s.Id.ToString()); return(s); }).ToList(); return(View(dtos)); }
public async Task <PagedResultOutput <StudentListDto> > GetStudentForPaging(GetStudentInput input) { var lst = _list.AsQueryable().WhereIf(!input.Filter.IsNullOrWhiteSpace(), x => x.FirstName.Contains(input.Filter)). OrderBy(input.Sorting).PageBy(input); var dtos = await Task.FromResult(lst.ToList()); return(new PagedResultOutput <StudentListDto>( _list.Count, dtos )); }
public async Task <IActionResult> Index(GetStudentInput input) { logger.Log(LogLevel.Warning, "消息了"); //获取分页结果 var dtos = await _studentService.GetPaginatedResult(input); dtos.Data = dtos.Data.Select(s => { //加密ID值并存储在EncryptedId属性中 s.EncryptedId = _protector.Protect(s.Id.ToString()); return(s); }).ToList(); return(View(dtos)); }
public ListResultDto <StudentListDto> GetStudent(GetStudentInput input) { var students = _studentRepository .GetAll() .WhereIf( !input.Filter.IsNullOrEmpty(), p => p.Name.Contains(input.Filter) || p.Surname.Contains(input.Filter) || p.EmailAddress.Contains(input.Filter) ) .OrderBy(p => p.Name) .ThenBy(p => p.Surname) .ToList(); return(new ListResultDto <StudentListDto>(ObjectMapper. Map <List <StudentListDto> >(students))); }