Как указать фильтры для Azure Compute C# клиента? - PullRequest
0 голосов
/ 09 января 2020

Я пытаюсь использовать Microsoft.Azure.Management.Compute ComputeManagementClient для запроса ResourceSKUs . Но я не могу предоставить правильное значение для параметра фильтра. Без фильтра ответ довольно велик, и я хочу уменьшить его путем фильтрации с помощью resourceType = virtualMachines.

Более конкретно, это мой код:

ComputeManagementClient computeManagementClient = new ComputeManagementClient(credentials);
computeManagementClient.SubscriptionId = "**********";
string filter = "resourceType eq 'virtualMachines'";  // Doesn't work. All results are returned.
// string filter = "$filter=resourceType eq 'virtualMachines'";  // Doesn't work. All results are returned.
// string filter = "resourceType eq virtualMachines";  // Doesn't work. All results are returned.
// string filter = "resourceType eq 'Microsoft.Compute/virtualMachines'";  // Doesn't work. All results are returned.
// string filter = "resourceType = 'virtualMachines'";  // Doesn't work. All results are returned.
// string filter = "resourceType='virtualMachines'";  // Doesn't work. All results are returned.
IPage<ResourceSku> resourceSkus = await computeManagementClient.ResourceSkus.ListAsync(filter: filter);

Я также пытался использовать OData.FilterString.Generate до создать строку фильтра:

Expression<Func<ResourceSku, bool>> filterPredicate = x => x.ResourceType.Equals("virtualMachines", StringComparison.OrdinalIgnoreCase);
string filter = FilterString.Generate(filterPredicate);
IPage<ResourceSku> resourceSkus = await computeManagementClient.ResourceSkus.ListAsync(filter: filter);

Есть идеи, какой правильный формат?

1 Ответ

1 голос
/ 09 января 2020

Согласно моим исследованиям, ResourceSkus API просто поддерживает фильтрацию по регионам. Для более подробной информации, пожалуйста, обратитесь к отзыву и статье

...