AzureStorage Table 查询:构建包含筛选器
AzureStorage Table Query: Building a Contains Filter
我知道 Azure 存储在其当前 API 中没有类似筛选器的包含。但是,我也知道您可以使用如下代码为字符串构建一个包含类似过滤器的过滤器:
TableQuery<TableEntity> Query = new TableQuery<TableEntity>()
.Where(
TableQuery.CombineFilters(
TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.GreaterThanOrEqual, substring),
TableOperators.And,
TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.LessThan, substring + someValue)
));
我的问题是我应该使用什么作为 someValue 来使它等同于包含?
我似乎无法在网上找到一个图表来指示哪个字符是 c# 词典中所有字符的第一个字符。有什么理由不这样做,而是在客户端进行搜索吗?我的 partitionKey 是定义明确的子组。
提前致谢!
它实际上使用ascii
顺序在过滤器中进行比较。
例如,如果 substring
是 good
,那么在第二个过滤器中:
TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.LessThan, "good" + someValue)
,
你应该把它改成
TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.LessThan, "gooe")
不需要添加someValue
。只需将子字符串的最后一个字符替换为下一个 ascii 字符。
我知道 Azure 存储在其当前 API 中没有类似筛选器的包含。但是,我也知道您可以使用如下代码为字符串构建一个包含类似过滤器的过滤器:
TableQuery<TableEntity> Query = new TableQuery<TableEntity>()
.Where(
TableQuery.CombineFilters(
TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.GreaterThanOrEqual, substring),
TableOperators.And,
TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.LessThan, substring + someValue)
));
我的问题是我应该使用什么作为 someValue 来使它等同于包含?
我似乎无法在网上找到一个图表来指示哪个字符是 c# 词典中所有字符的第一个字符。有什么理由不这样做,而是在客户端进行搜索吗?我的 partitionKey 是定义明确的子组。
提前致谢!
它实际上使用ascii
顺序在过滤器中进行比较。
例如,如果 substring
是 good
,那么在第二个过滤器中:
TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.LessThan, "good" + someValue)
,
你应该把它改成
TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.LessThan, "gooe")
不需要添加someValue
。只需将子字符串的最后一个字符替换为下一个 ascii 字符。