public void OnSearch() { matchedTeachers = new List <Teacher>(); IEnumerable <Subject> selectedSubjects = GetSelectedSubsFromInput(subjects, subjectInput.text); IEnumerable <Faculty> selectedFaculties = new Faculty[] { faculties[facList.value] }; bool bothGender = maleToggle.State && femaleToggle.State; bool isMale = maleToggle.State && !femaleToggle.State; bool isFemale = !maleToggle.State && femaleToggle.State; foreach (Teacher t in allTeachers) { if ((t.Rating >= ratingSlider.value || t.Rating == 0) && ((selectedSubjects.Count() == 0 || t.subjects.Select(x => x.Name).HasSameElement(selectedSubjects.Select(x => x.Name))) && (selectedFaculties.Count() == 0 || t.Faculties.HasSameElement(selectedFaculties)))) { if (bothGender) { matchedTeachers.Add(t); } else if (t.isMale && isMale) { matchedTeachers.Add(t); } else if (!t.isMale && isFemale) { matchedTeachers.Add(t); } } } searchAction.Invoke(matchedTeachers.OrderByDescending(x => x.Rating)); OnClose(); }