کلاسی برای کپسوله سازی اطلاعات جستجو و مرتب سازی سابقه های آموزشی
Inheritance: Decision.ViewModel.Common.BaseSearchRequest
        public virtual async Task<ActionResult> ListAjax(EducationalExperienceSearchRequest request)
        {
            var viewModel = await _educationalExperienceService.GetPagedListAsync(request);
            if (viewModel.EducationalExperiences == null || !viewModel.EducationalExperiences.Any())
                return Content("no-more-info");

            return PartialView(MVC.EducationalExperience.Views._ListAjax, viewModel);
        }
        public virtual async Task<ActionResult> ListAjax(EducationalExperienceSearchRequest request)
        {
            if (!_referentialTeacherService.CanManageTeacher(request.TeacherId)) return HttpNotFound();
            request.Type=EducationalExperienceType.TeachingInOrganizational;
            var viewModel = await _educationalExperienceService.GetPagedListAsync(request);
            if (viewModel.EducationalExperiences == null || !viewModel.EducationalExperiences.Any())
                return Content("no-more-info");

            return PartialView(MVC.OrganizationalTeaching.Views._ListAjax, viewModel);
        }
        public async Task<EducationalExperienceListViewModel> GetPagedListAsync(EducationalExperienceSearchRequest request)
        {
            var educationalExperiences =
                _educationalExperiences.Where(a => a.TeacherId == request.TeacherId & a.Type == request.Type)
                    .AsNoTracking()
                    .Include(a => a.Title)
                    .Include(a => a.Creator)
                    .Include(a => a.LasModifier)
                    .OrderBy(a => a.Id)
                    .AsQueryable();

            var selectedEducationalExperiences = educationalExperiences.ProjectTo<EducationalExperienceViewModel>(_mappingEngine);

            var query = await selectedEducationalExperiences
                .Skip((request.PageIndex - 1) * 10)
                .Take(10).ToListAsync();

            return new EducationalExperienceListViewModel { SearchRequest = request, EducationalExperiences = query };
        }