Beispiel #1
0
        //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);
        }
Beispiel #2
0
        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));
        }
Beispiel #6
0
        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)));
        }