public IEnumerable <ISpeaker> GetFilteredSpeakers(IEventFilters filters) { List <ISpeaker> result = null; // Remove any speaker filters first filters.SpeakerIds = new List <int>(); var filteredSessionIds = _sessionRepository.FilterSessions(filters); if (filteredSessionIds != null) { var filteredSessions = _sessionRepository.GetSessionsInSessionIdList(filteredSessionIds); if (filteredSessions != null) { var videoIds = _videoRepository.GetVideoIdListBySessionList(filteredSessions); if (videoIds != null && videoIds.Count() > 0) { var speakerIds = _speakerVideoRepository.GetSpeakerIdListWhereInVideoIdList(videoIds); if (speakerIds != null && speakerIds.Count() > 0) { result = _speakerRepository.GetWhereInSpeakerIdList(speakerIds).OrderBy(x => x.Name).ToList(); } } } } return(result); }