public static People GetActivists(Organization organization, Geography geography) { var people = new People(); // Expensive op: BasicPersonRole[] basicPersonRoles = SwarmDb.GetDatabaseForReading().GetRolesForOrganizationsGeographies(organization.GetTree().Identities, geography.GetTree().Identities); var lookup = new Dictionary <int, bool>(); foreach (BasicPersonRole basicRole in basicPersonRoles) { if (basicRole.Type == RoleType.LocalActive || basicRole.Type == RoleType.LocalLead || basicRole.Type == RoleType.LocalDeputy) { if (!lookup.ContainsKey(basicRole.PersonId)) { people.Add(Person.FromIdentity(basicRole.PersonId)); lookup[basicRole.PersonId] = true; } } } people.Sort(); return(people); }