0
我处于奇怪的情况,我有一些数字作为文本存储在数据库中。不是很熟悉OData,我试图编写一个查询来处理这些字符串作为实际的数字。按OData长度过滤字段
$filter=(((length(Document/DocumentSet/ReferenceNumbers) ge 3) and (Document/DocumentSet/ReferenceNumbers gt '100')))
是我能想出的最好,但给了我一个ODataException
The argument for an invocation of a function with name 'length' is not a single value. All arguments for this function must be single values.
或者,如果我尝试使用(我还在试图找出哪一个是正确的,我真不知道的OData):
$filter=(((length(Document/DocumentSet/ReferenceNumbers/Number) ge 3) and (Document/DocumentSet/ReferenceNumbers/Number gt '100')))
然后
The parent value for a property access of a property 'Number' is not a single value. Property access can only be applied to a single value.
问题是:有什么方法可以按OData过滤一些东西吗?
你可以添加一些信息:什么是组要筛选上(前'$ filter'部分)?这个集合元素的数据模型(来自'$ metadata'端点)是什么?我猜'ReferenceNumbers'是一个数组,所以你必须使用lambda进行过滤。到目前为止,我无法提供更多帮助,但lambda的'length'和'gt'可能已经足够。完整的操作列表(也有可用的投影):http://docs.oasis-open.org/odata/odata/v4.0/errata03/os/complete/part2-url-conventions/odata-v4.0- errata03-os-part2-url-conventions-complete.html#_Toc453752358 – mat3e
'$ filter'之前的部分不是一个集合,我相信。 (原始实现是非REST事物作为REST事物出售)问题的$元数据部分我甚至不明白(对不起)。无论如何,我会尝试lambda表达式,我在代码中看到了一些,可能他们出于某种原因。 – ytg
在OData中有一个端点'root/$ metadata',它返回一个服务描述实体数据模型。 '$ filter'应该运行在一个要过滤的集合上(这就是我所说的“set”)。让我知道我是否可以帮助你。 – mat3e