Запрос таблицы Azure удалить элементы, отсутствующие в списке для указанного столбца - PullRequest
0 голосов
/ 24 мая 2018

Если у меня есть Azure Table, который выглядит примерно так:

PartitionKey | RowKey | Timestamp | InstanceId

У меня есть InstanceId с a и b.Я хотел бы удалить все элементы в таблице, которых нет в списке InstanceId s (например, c).InstanceId s пересекает границы Partition.Я знаю, как сделать Batch Delete.Но я не уверен, как запросить предметы, которые не a или b.

1 Ответ

0 голосов
/ 24 мая 2018

Если типом InstanceId является строка,

var query = new TableQuery<EntityType>()
    .Where(
         TableQuery.CombineFilters(
             TableQuery.GenerateFilterCondition("InstanceId", QueryComparisons.NotEqual, "a"), 
             TableOperators.And,
             TableQuery.GenerateFilterCondition("InstanceId", QueryComparisons.NotEqual, "b")
    ));

//Or you can build the filter string directly
var query = new TableQuery<EntityType>().Where("(InstanceId ne 'a') and (InstanceId ne 'b')");

Если это тип int, аналогичная операция.

var query = new TableQuery<EntityType>()
    .Where(
        TableQuery.CombineFilters(
            TableQuery.GenerateFilterConditionForInt("InstanceId", QueryComparisons.NotEqual, a), 
            TableOperators.And, 
            TableQuery.GenerateFilterConditionForInt("InstanceId", QueryComparisons.NotEqual, b)
    ));

//Or build the filter string directly
var query = new TableQuery<EntityType>().Where("(InstanceId ne a) and (InstanceId ne b)");

Затем получите результат запроса, используя ExecuteQuery, что вам нужно.Пример:

var entriesResult = table.ExecuteQuerySegmentedAsync(query, continuationToken).Result.Results;
...