5

我想使用 PrimaryKey 查询我的 azure 表存储,并且我想检查我的 RowKey 是否在一个范围内。例如范围 02001 到 02999

有人能告诉我我该怎么做吗?我了解如何通过简单的方式查询 PK:

where fooEntiy.PartitionKey == partition

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

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

感谢您的意见,

麻理子

4

2 回答 2

13

您的查询可能如下所示:

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

这应该返回包含这些值的所有项目lowerBoundRowKeyupperBoundRowKey如果您不希望它具有包容性,只需使用 > 和 < 而不是 >= 和 <=)。

除此以外,您无需进行任何其他过滤。

看起来您已经用前导零填充了存储在 RowKey 中的数字,这是一件好事,因为该范围将是词汇范围,而不是数字范围。

lowerBoundKey = 10例如,使用并且upperBoundKey = 100不会返回 RowKey 为 20 的项目运行此查询。

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

于 2011-05-09T05:53:43.480 回答
2

这将使用指定范围的 RowKey 值和指定的 PartitionKey 带来实体:

" PartitionKey eq '你的 partitonKey 值' 和 (RowKey gt '02001' and RowKey lt '02999') "

在此处此处查找更多信息。希望这可以帮助。

于 2011-05-09T05:52:05.897 回答