我正在使用Azure表存储,它提供的查询表存储的选项非常少。我通过以下方式将RowKey作为组合键:
"b844be0d-2280-49f7-9ad7-58c36da80d22_2518908336099522182"
,"b844be0d-2280-49f7-9ad7-58c36da80d22_2518908336099522183"
,"b844be0d-2280-49f7-9ad7-58c36da80d22_2518908336099522184"
,"b844be0d-2280-49f7-9ad7-58c36da80d22_2518908336099522185"
第一部分是Guid,分隔符(_)后面的第二部分是时间戳。
我想使用其运算符搜索以“2518908336099522182”结尾的rowkeys的azure存储
没有“Contains”运算符可以在这里提供帮助,我该怎么做才能使它适用于“EndsWith”类型的过滤?
答案 0 :(得分:0)
需要注意的事项:PartitionKey和RowKey属性都是String类型,您可以通过使用 $ filter 过滤内容,或者通过过滤PartitionKey来过滤内容和Rowkey如下:
https://myaccount.table.core.windows.net/Customers(PartitionKey='MyPartition',RowKey='MyRowKey1')
另一个注释:常量值必须与属性具有相同的数据类型,以便过滤器返回有效结果。有关支持的属性类型的详细信息,请参阅了解表服务数据模型。
在您的情况下,据我所知,对Rowkey进行分段然后对其进行过滤不是受支持运算符的选项。我建议您点击 link查看支持查询的完整文档。
答案 1 :(得分:0)
我假设您希望按日期时间进行搜索,因此您可以将日期时间值放在GUID前面,以使行键成为" 2518908336099522182_b844be0d-2280-49f7-9ad7-58c36da80d22& #34; 强>
接下来,当您的搜索可以表达为:
var filters = TableQuery.CombineFilters(
TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, "Smith"),
TableOperators.And,
TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.GreaterThanOrEqual, "2518908336099522182"));
filters = TableQuery.CombineFilters(filters, TableOperators.And, TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.LessThanOrEqual, "2518908336099522182"));
TableQuery<CustomerEntity> rangeQuery = new TableQuery<CustomerEntity>().Where(filters);
希望这有帮助