private Site GetSiteFromRequest() { string authority = _requestBase.Url.Authority; System.Collections.Generic.IList <Site> allSites = _session.QueryOver <Site>().Fetch(s => s.RedirectedDomains).Eager.Cacheable().List(); System.Collections.Generic.List <RedirectedDomain> redirectedDomains = allSites.SelectMany(s => s.RedirectedDomains).ToList(); Site site = allSites.FirstOrDefault(s => s.BaseUrl != null && s.BaseUrl.Equals(authority, StringComparison.OrdinalIgnoreCase)); if (site == null) { RedirectedDomain redirectedDomain = redirectedDomains.FirstOrDefault( s => s.Url != null && s.Url.Equals(authority, StringComparison.OrdinalIgnoreCase)); if (redirectedDomain != null) { site = redirectedDomain.Site; } } return(site ?? allSites.First()); }