如何在Azure表中使用相同的分区键检索多个条目?

时间:2015-12-18 20:37:43

标签: azure-table-storage

我想从Azure表存储中检索具有相同分区键但具有不同行键的多个条目。我的假设是逐个检索它们更有效。我想使用多个rowFilters指定组合查询。但是TableQuery.combineFilters只需要一个过滤器。我怎样才能做到这一点?我正在关注Azure Table文档中的Retrieve a range of entities in a partition

2 个答案:

答案 0 :(得分:3)

您可以使用相同的分区键查询多个行,但是您需要使用>和<除了分区键上的==过滤器之外,还会对rowkey进行过滤。没有办法在一个请求中挑选几个不同的行。您需要搜索范围。您可以设计行密钥,以便更密切地对相关行进行分组,从而限制检索的行数。

答案 1 :(得分:-1)

关于此页面的大约1/2,我认为您将找到您正在寻找的答案:

Tables Deep Dive

string pkFilter = TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, "samplePK");

string rkLowerFilter = TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.GreaterThanOrEqual, "5");

string rkUpperFilter = TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.LessThan, "10");

// Note CombineFilters has the effect of “([Expression1]) Operator (Expression2]), as such passing in a complex expression will result in a logical grouping. 
string combinedRowKeyFilter = TableQuery.CombineFilters(rkLowerFilter, TableOperators.And, rkUpperFilter);

string combinedFilter = TableQuery.CombineFilters(pkFilter, TableOperators.And, combinedRowKeyFilter);

// OR 
string combinedFilter = string.Format(“({0}) {1} ({2}) {3} ({4})”, pkFilter, TableOperators.And, rkLowerFilter, TableOperators.And, rkUpperFilter);
TableQuery<SampleEntity> query = new TableQuery<SampleEntity>().Where(combinedFilter);