如何使用Azure表存储选择RowKey范围?

时间:2011-05-09 05:09:45

标签: azure azure-table-storage

我想使用PrimaryKey查询我的azure tablestorage,我想检查我的RowKey是否在一个范围内。例如,范围02001至02999

有人能告诉我怎么做吗?我理解如何用简单的方式查询PK:

where fooEntiy.PartitionKey == partition

但我不知道如何查询fooEntity.RowKey。

此外,如果我通过指定范围来执行此操作,那么它是否仍将检索该分区的所有条目,然后检查它们是否与范围匹配?

感谢您的建议,

真理子

2 个答案:

答案 0 :(得分:13)

您的查询可能如下所示:

where fooEntity.PartitionKey == partionKey
    && fooEntity.RowKey.CompareTo(lowerBoundRowKey) >= 0
    && fooEntity.RowKey.CompareTo(upperBoundRowKey) <= 0

这应返回lowerBoundRowKeyupperBoundRowKey之间的所有项目,包括这些值(如果您不希望它包含在内,请使用&gt;和&lt;而不是&gt; =和&lt; =)。

您不需要进行任何其他过滤。

看起来你已经填充了你在RowKey中存储的带有前导零的数字,这是一件好事,因为这个范围将是一个词法范围,而不是数值范围。

e.g。使用lowerBoundKey = 10upperBoundKey = 100运行此查询不会返回RowKey为20的项目。

如果您用零填充它,lowerBoundKey = 00010upperBoundKey = 00100将返回一个RowKey为00020的项目。

答案 1 :(得分:2)

这将使用指定的PartitionKey:

使用指定范围的RowKey值的实体

“PartitionKey eq'你的partitonKey值'和(RowKey gt'02001'和RowKey lt'02999')”

查找更多信息herehere。 希望这会有所帮助。