private List <ExtendedAuthorizationRule> GetAuthorizationRulesToFilter(AuthorizationRuleFilterOption options) { if (!string.IsNullOrEmpty(options.EntityName)) { return(GetAuthorizationRuleCore( options.Namespace, options.EntityName, options.EntityType, r => true)); } else if (options.EntityTypes != null && options.EntityTypes.Count > 0) { NamespaceManager namespaceManager = CreateNamespaceManager(options.Namespace); List <ExtendedAuthorizationRule> rules = new List <ExtendedAuthorizationRule>(); options.EntityTypes = options.EntityTypes.Distinct().ToList(); foreach (ServiceBusEntityType type in options.EntityTypes) { switch (type) { case ServiceBusEntityType.Queue: rules.AddRange(namespaceManager.GetQueues() .SelectMany(e => e.Authorization .Select(r => CreateExtendedAuthorizationRule( r, options.Namespace, e.Path, ServiceBusEntityType.Queue)))); break; case ServiceBusEntityType.Topic: rules.AddRange(namespaceManager.GetTopics() .SelectMany(e => e.Authorization .Select(r => CreateExtendedAuthorizationRule( r, options.Namespace, e.Path, ServiceBusEntityType.Topic)))); break; case ServiceBusEntityType.Relay: rules.AddRange(namespaceManager.GetRelaysAsync().Result .SelectMany(e => e.Authorization .Select(r => CreateExtendedAuthorizationRule( r, options.Namespace, e.Path, ServiceBusEntityType.Relay)))); break; case ServiceBusEntityType.NotificationHub: rules.AddRange(namespaceManager.GetNotificationHubs() .SelectMany(e => e.Authorization .Select(r => CreateExtendedAuthorizationRule( r, options.Namespace, e.Path, ServiceBusEntityType.NotificationHub)))); break; default: throw new InvalidOperationException(); } } return(rules); } else { return(ServiceBusClient.Namespaces.ListAuthorizationRules(options.Namespace) .AuthorizationRules .Select(ar => ar.ToSharedAccessAuthorizationRule()) .Select(r => CreateExtendedAuthorizationRule(r, options.Namespace)) .ToList()); } }