如何在 Azure 表存储上设置多个筛选器?
这是我尝试过的:
string partitionFilter = TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, "partition1");
string date1 = TableQuery.GenerateFilterCondition("Date", QueryComparisons.GreaterThanOrEqual, "31-8-2013T14:15:14Z");
string date2 = TableQuery.GenerateFilterCondition("Date", QueryComparisons.LessThanOrEqual, "31-8-2013T14:15:14Z");
string finalFilter = TableQuery.CombineFilters(partitionFilter, TableOperators.And, date1);
这不起作用,因为 TableQuery.CombineFilters()
仅采用 3 个参数。我需要第二次约会的额外参数。
我的第二次尝试:
string filter = "PartitionKey eq 'partition1' and Date ge datetime'31-8-2013T14:15:14Z' and Date lt datetime'31-8-2013T14:19:10Z'";
TableQuery<CustomEntity> query = new TableQuery<CustomEntity>().Where(filter).Take(5);
这将返回400错误请求
。但是,如果我删除“日期时间”,它会运行但不会返回任何结果,而它应该返回几百条记录。
根据this来自 msdn 的文档,这就是日期时间的格式。
我的结果应该是两个日期之间的所有记录。
我怎样才能做到这一点?
最佳答案
首先将分区过滤器与其中一个日期过滤器“与”,然后将中间结果与另一个日期过滤器“与”。
string date1 = TableQuery.GenerateFilterConditionForDate(
"Date", QueryComparisons.GreaterThanOrEqual,
DateTimeOffsetVal);
string date2 = TableQuery.GenerateFilterConditionForDate(
"Date", QueryComparisons.LessThanOrEqual,
DateTimeOffsetVal);
string finalFilter = TableQuery.CombineFilters(
TableQuery.CombineFilters(
partitionFilter,
TableOperators.And,
date1),
TableOperators.And, date2);
关于c# - 多个筛选条件 Azure 表存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18549555/