c# - 多个筛选条件 Azure 表存储

标签 c# azure azure-table-storage

如何在 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/

相关文章:

c# - session 结束事件不起作用

c# - Topshelf 需要使用 Autofac 的 Quartz 作业工厂

azure - 如何通过 VPN 将 Azure Function(而非应用服务)连接到本地 SQL 服务器?

c# - 当字符串长度超过 32768 个字符时,Azure 存储异常

azure - 关于 Azure 表二级索引

azure - Function App 中表存储的 CRUD 操作

c# - 如何打开/关闭大写锁定键

azure - Spring Boot Cosmos DB 实现中的动态查询

powershell - 我们如何复制 Azure Data Lake Store 文件夹中的任何文件

c# - 如何将数组中的第 n 项取到数组中的第 z 项?