public async Task <JsonResult> Index(Paginator paginator, StudentFilter filter) { List <StudentViewModel> studentViewList = new List <StudentViewModel>(); try { IEnumerable <StudentDataModel> studentList = await _studentService.GetStudentList(); IEnumerable <GroupDataModel> groupList = await _groupService.GetGroupList(); studentViewList = studentList.Select(x => new StudentViewModel(x, groupList.Where(i => x.GroupsIdList.Contains(i.ID)))).ToList(); } catch (Exception ex) { return(Json(new { error = ex.Message })); } if (paginator.PageNumber.HasValue && paginator.StudentsCountAtPage.HasValue && paginator.PageNumber > 0) { studentViewList = studentViewList.GetRange((paginator.PageNumber.Value - 1) * paginator.StudentsCountAtPage.Value, paginator.StudentsCountAtPage.Value); } if (studentViewList != null) { studentViewList = filter.FilterList(studentViewList); } JsonResult result = Json(studentViewList?.Select(s => new { id = s.Id, fullName = s.FullName, uniqId = s.UniqueName, groups = String.Join(',', s.GroupList.Select(i => i.Name)) }).ToList()); return(result); }