public string ToString(AzureResourceSegment segment, int resourceCount = 0) { resourceCount = Math.Max(resourceCount, 0); resourceCount = Math.Min(resourceCount, ResourceTypes.Count); var resourceId = new StringBuilder($"/subscriptions/{SubscriptionId}"); if (segment != AzureResourceSegment.Subscription && !string.IsNullOrEmpty(ResourceGroup)) { resourceId.Append($"/resourceGroups/{ResourceGroup}"); if (segment != AzureResourceSegment.ResourceGroup && ResourceTypes.Any()) { for (int i = 0; i < (resourceCount == 0 ? ResourceTypes.Count : resourceCount); i++) { if (i == 0) { resourceId.Append($"/providers/{ResourceNamespace}"); } resourceId.Append($"/{ResourceTypes[i].Key}/{ResourceTypes[i].Value}"); } } } return(resourceId.ToString()); }