public List <string> AttendanceModes(ICourseSearchRequestModel requestModel) { var synonymousModes = new AttendanceMode[] { AttendanceMode.DistanceWithAttendance, AttendanceMode.DistanceWithoutAttendence, AttendanceMode.OnlineWithAttendance, AttendanceMode.OnlineWithoutAttendence }; var attendanceModes = Enum.GetValues(typeof(AttendanceMode)) .Cast <AttendanceMode>() .Where(x => IsAttendanceModeDisplayable(x)) .Cast <int>() .Where(x => requestModel.AttendanceModes.Contains(x)) .Cast <AttendanceMode>() .ToList(); if (attendanceModes.Any(x => synonymousModes.Contains(x))) { foreach (var synonym in synonymousModes) { if (!attendanceModes.Contains(synonym)) { attendanceModes.Add(synonym); } } } var list = new List <string>(); foreach (var attendanceMode in attendanceModes) { list.Add(GetAttendanceModeSearchString(attendanceMode)); } return(list.Count() == 6 ? new List <string>() : list); }