如何在 Azure Table 中检索具有相同分区键的多个条目?

How to retrieve multiple entries with the same partition key in Azure Table?

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

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

在本页的大约 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);