给定分区键列表,在Table Storage中查找匹配记录

时间:2017-03-16 00:14:39

标签: c# azure azure-storage azure-table-storage

我目前正在使用以下每个需要查询的密钥:

TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, itemId)

然而,这在数千或数万的规模上是笨重的。

有没有办法传递itemIds的列表,以便我进出一次?

我试过了,但不支持Contains

   IQueryable<Item> queryForItems = this.itemTable.CreateQuery<Item>().Where(s => itemIds.Contains(s.PartitionKey));

思想?

1 个答案:

答案 0 :(得分:1)

不支持开箱即用。您可以尝试做的是生成一个等于过滤器的列表,然后将它们与OR条件组合。

这样的事情:

var partitions= new []{"partition1", "partition2", "partition3"};
var filters = partitions.Select(key => TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, key)).ToArray();  

然后您可以使用循环组合过滤器:

string finalFilter = String.Empty
for (var i = 0; i < filters.Length; i++)
combine = TableQuery.CombineFilters(finalFilter, TableOperators.Or, filters[i]);