static public OrganizationRolesDataObject.Role[] SelectThisByOrganization(int organizationId) { try { BasicPersonRole[] personRoles = Roles.GetAllDownwardRolesRoles(organizationId, Geography.IgnoreGeography); Dictionary <int, List <Role> > result = new Dictionary <int, List <Role> >(); foreach (BasicPersonRole br in personRoles) { if (br.OrganizationId == organizationId) { if (!result.ContainsKey(br.OrganizationId)) { result[br.OrganizationId] = new List <Role>(); } result[br.OrganizationId].Add(new Role(br)); } } List <Role> result2 = new List <Role>(); lock (dataLock) { hierarchicalSortOrder = Geographies.GetHierarchicalSortOrder(); RecursiveAddInTreeOrder(result2, result, organizationId, 0); } return(result2.ToArray()); } catch { return(new OrganizationRolesDataObject.Role[0]); } }