Odata 逻辑应用程序在获取实体操作中使用过滤器查询

Odata 逻辑应用程序在获取实体操作中使用过滤器查询,odata,azure-table-storage,azure-logic-apps,Odata,Azure Table Storage,Azure Logic Apps,我不熟悉logic应用程序,尝试构建和logic应用程序来检查Azure表中的记录。PartitionKey是DateTime.utcNow().Ticks的字符串类型。我想编写一个筛选查询来筛选PartitionKey小于或等于当前日期时间的记录。我的努力如截图所示: 它一直告诉我这个表达式是无效的。有人能给我一些提示来编写正确的查询吗?非常感谢。我不确定此表达式无效的原因。首先,您的筛选查询表达式的格式应为时间戳le datetime'2019-03-18T06:07Z' 第二,表达式不需

我不熟悉logic应用程序,尝试构建和logic应用程序来检查Azure表中的记录。PartitionKey是DateTime.utcNow().Ticks的字符串类型。我想编写一个筛选查询来筛选PartitionKey小于或等于当前日期时间的记录。我的努力如截图所示:


它一直告诉我这个表达式是无效的。有人能给我一些提示来编写正确的查询吗?非常感谢。我不确定此表达式无效的原因。

首先,您的筛选查询表达式的格式应为
时间戳le datetime'2019-03-18T06:07Z'

第二,表达式不需要使用
ticks
函数,如果使用它,查询表达式将如下图所示

因此,实际上正确的查询表达式应该是
Timestamp le datetime'@{utcNow()}'
,如果收到警告,请转到代码视图模式更改表达式,不要忘记单引号

这是我的测试结果,希望这能帮助你,如果你还有其他问题,请随时告诉我


谢谢George的提示,我只需要添加一个引号,而不是使用
字符串()。这将帮助我将ticks值转换为string,以便可以将其与PartitionKey字段进行比较。

这样,它对我执行与此表查询相同的操作:

string currentDateTime = DateTime.UtcNow.Ticks.ToString();
TableQuery<EmailTableEntity> rangeQuery =
                                new TableQuery<EmailTableEntity>()
                                .Where(TableQuery.GenerateFilterCondition
                                ("PartitionKey", QueryComparisons.LessThanOrEqual, currentDateTime));
string currentDateTime=DateTime.UtcNow.Ticks.ToString();
表查询范围查询=
新建TableQuery()
.Where(TableQuery.GenerateFilterCondition
(“PartitionKey”,QueryComparisons.lessthanRequal,currentDateTime));

谢谢!这给了我一些灵感。但让我澄清我的问题。我在分区键中存储了一些特定日期的刻度值,我希望将刻度值与当前时间的刻度值进行比较。谢谢。我觉得只要我加上一个引号就行了吗?不,没有引号不会用这个提示来警告你,如果这对你有帮助,你可以接受它作为答案。