我想从Azure表存储中检索具有相同分区键但具有不同行键的多个条目。我的假设是逐个检索它们更有效。我想使用多个rowFilters指定组合查询。但是TableQuery.combineFilters
只需要一个过滤器。我怎样才能做到这一点?我正在关注Azure Table文档中的Retrieve a range of entities in a partition。
答案 0 :(得分:3)
您可以使用相同的分区键查询多个行,但是您需要使用>和<除了分区键上的==过滤器之外,还会对rowkey进行过滤。没有办法在一个请求中挑选几个不同的行。您需要搜索范围。您可以设计行密钥,以便更密切地对相关行进行分组,从而限制检索的行数。
答案 1 :(得分:-1)
关于此页面的大约1/2,我认为您将找到您正在寻找的答案:
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);