public PageListResultBO <RecruitmentSkillDTO> GetDataByPage(RecruitmentSkillSearchDTO searchParams, int pageIndex = 1, int pageSize = 20) { var queryResult = (from skill in recruitmentSkillRepository.GetAllAsQueryable() select new RecruitmentSkillDTO() { Id = skill.Id, Title = skill.Title, Skills = skill.Skills }); if (searchParams != null) { if (!string.IsNullOrEmpty(searchParams.QueryTitle)) { searchParams.QueryTitle = searchParams.QueryTitle.Trim().ToLower(); queryResult = queryResult.Where(x => x.Title.Trim().ToLower().Contains(searchParams.QueryTitle)); } if (!string.IsNullOrEmpty(searchParams.sortQuery)) { queryResult = queryResult.OrderBy(searchParams.sortQuery); } else { queryResult = queryResult.OrderByDescending(x => x.Id); } } var result = new PageListResultBO <RecruitmentSkillDTO>(); if (pageSize == -1) { var pagedList = queryResult.ToList(); result.Count = pagedList.Count; result.TotalPage = 1; result.ListItem = pagedList; } else { var dataPageList = queryResult.ToPagedList(pageIndex, pageSize); result.Count = dataPageList.TotalItemCount; result.TotalPage = dataPageList.PageCount; result.ListItem = dataPageList.ToList(); } if (result.ListItem.Any()) { var groupSkillsDetail = recruitmentSkillDetailRepository.GetAll(); result.ListItem.ForEach(x => { x.NumberOfSkills = x.Skills.Split(',').Count(); var skillIds = x.Skills.ToListNumber <long>(); x.GroupSkillDetails = groupSkillsDetail.Where(y => skillIds.Contains(y.Id)) .Select(y => mapper.Map <RecruitmentSkillDetail, RecruitmentSkillDetailDTO>(y)).ToList(); }); } return(result); }