public static IEnumerable <SecurityGroupRule> Select(string region, IEnumerable <string> providers, IEnumerable <PortSpec> ingressPorts) { return(Providers.Aggregate(new List <SecurityGroupRule>(), (list, provider) => { if (null == providers || provider.NameMatchesAny(providers)) { list.AddRange(provider.Select(region, ingressPorts)); } return list; })); }