public IntegrationProvider GetByGroupId(int groupId) { var provider = Collection.FirstOrDefault(c => c.TEGroupId == groupId); if (provider == null) { var mappedGroups = Collection.Select(c => c.TEGroupId).ToList(); var group = TEHelper.GetGroupById(groupId); var relativeUrl = new StringBuilder(); while (group.Id.HasValue && group.ParentGroupId >= 0 && !mappedGroups.Contains(group.Id.Value)) { relativeUrl.Insert(0, string.Format("{0}/", group.Key)); group = TEHelper.GetGroupById(group.ParentGroupId); } provider = Collection.FirstOrDefault(c => c.TEGroupId == group.Id); if (provider != null) { provider.TEGroupId = groupId; provider.SPSiteURL = string.Format("{0}/{1}", provider.SPSiteURL.TrimEnd('/'), relativeUrl); provider.Initialize(); return(provider); } } return(provider); }