public async Task <IEnumerable <StudentModel> > Search(StudentSearchViewModel search) { bool filterByGraduatingYears = search.SelectedGraduatingYears != null && search.SelectedGraduatingYears.Any(); bool filterByMajors = search.SelectedMajors != null && search.SelectedMajors.Any(); bool filterByCountries = search.SelectedCountries != null && search.SelectedCountries.Any(); if (!filterByGraduatingYears && !filterByMajors && !filterByCountries) { return(Enumerable.Empty <StudentModel>()); } IEnumerable <StudentModel> students = await StudentRepository.GetStudents(); if (filterByGraduatingYears) { students = students.Where(x => { return(x.GraduatingYear.HasValue && search.SelectedGraduatingYears.Any(y => y == x.GraduatingYear.Value)); }); } if (filterByMajors) { students = students.Where(x => { return(x.SelectedMajors != null && x.SelectedMajors.Count() > 0 && x.SelectedMajors.Intersect(search.SelectedMajors).Count() > 0); }); } if (filterByCountries) { IEnumerable <StudyAbroadViewModel> studyAbroad = await StudyAbroadRepository.GetAll(); students = studyAbroad .Where(x => search.SelectedCountries.Any(y => y == x.CountryId)) .Select(x => x.Student); //students = students // .Where(x => x.StudyAbroadCountry.Count<int>() > 0) // .Where(x => x.StudyAbroadCountry.Intersect(search.SelectedCountries).Count<int>() > 0); } return(students); }
public async Task <IEnumerable <StudyAbroadViewModel> > GetAll() { return(await StudyAbroadRepository.GetAll()); }