我目前正在使用以下每个需要查询的密钥:
TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, itemId)
然而,这在数千或数万的规模上是笨重的。
有没有办法传递itemIds
的列表,以便我进出一次?
我试过了,但不支持Contains
:
IQueryable<Item> queryForItems = this.itemTable.CreateQuery<Item>().Where(s => itemIds.Contains(s.PartitionKey));
思想?
答案 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]);