使用OData按长度筛选字段
我遇到了一个奇怪的情况,我把一些数字作为文本存储在数据库中。由于不太熟悉OData,我正在尝试编写一个查询,将这些字符串作为实际数字处理使用OData按长度筛选字段,odata,Odata,我遇到了一个奇怪的情况,我把一些数字作为文本存储在数据库中。由于不太熟悉OData,我正在尝试编写一个查询,将这些字符串作为实际数字处理 $filter=(((length(Document/DocumentSet/ReferenceNumbers) ge 3) and (Document/DocumentSet/ReferenceNumbers gt '100'))) 这是我能想到的最好的,但这让我感到很意外 The argument for an invocation of a funct
$filter=(((length(Document/DocumentSet/ReferenceNumbers) ge 3) and (Document/DocumentSet/ReferenceNumbers gt '100')))
这是我能想到的最好的,但这让我感到很意外
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):
然后
问题是:有没有办法按长度过滤带有OData的内容?从您发布的内容中,我了解到
ReferenceNumbers
属性是一个数组,因为错误不会显示单个值
要在阵列上进行筛选,需要使用lambda运算符():
-当至少一个条目必须与条件匹配时any
-当所有数组项必须匹配它们时all
length
和gt
应该适合您。请求示例-所有参考编号应大于100:
root/set?$filter=Document/DocumentSet/ReferenceNumbers/any(refNum:refNum gt'100')
从您发布的内容中,我了解到ReferenceNumbers
属性是一个数组,因为错误不涉及单个值
要在阵列上进行筛选,需要使用lambda运算符():
any
-当至少一个条目必须与条件匹配时
all
-当所有数组项必须匹配它们时
然后length
和gt
应该适合您。请求示例-所有参考编号应大于100:
root/set?$filter=Document/DocumentSet/ReferenceNumbers/any(refNum:refNum gt'100')
您可以添加一些信息:您正在筛选的集合是什么(在$filter
之前的部分)?此集合元素的数据模型(来自$metadata
端点)是什么?我猜ReferenceNumbers
是一个数组,因此必须使用lambda进行过滤。到目前为止,我无法提供更多帮助,但是对于lambda,length
和gt
可能就足够了。完整的操作列表(还有铸造):我相信,$filter
之前的部分不是一套。(最初的实现是非REST的东西,作为REST的东西出售)问题的$metadata
部分我甚至不理解(对不起)。无论如何,我会尝试lambda,我在代码中看到了一些,可能是有原因的。在OData中有一个端点root/$metadata
,它返回服务描述、实体数据模型。而$filter
应该在要筛选的集合上运行(这就是我所说的“set”的意思)。如果我能帮助你,请告诉我。@Mate:我仍然无法从系统中获取$metadata,但你的第一个评论是我的解决方案:我需要lambdas。很高兴听到:)你能补充一些信息吗:你正在筛选的集合是什么(在$filter
之前的部分)?此集合元素的数据模型(来自$metadata
端点)是什么?我猜ReferenceNumbers
是一个数组,因此必须使用lambda进行过滤。到目前为止,我无法提供更多帮助,但是对于lambda,length
和gt
可能就足够了。完整的操作列表(还有铸造):我相信,$filter
之前的部分不是一套。(最初的实现是非REST的东西,作为REST的东西出售)问题的$metadata
部分我甚至不理解(对不起)。无论如何,我会尝试lambda,我在代码中看到了一些,可能是有原因的。在OData中有一个端点root/$metadata
,它返回服务描述、实体数据模型。而$filter
应该在要筛选的集合上运行(这就是我所说的“set”的意思)。如果我能帮助你,请告诉我。@Mate:我仍然无法从系统中获取$metadata,但你的第一个评论是我的解决方案:我需要lambdas。你能把它变成一个答案吗,我接受。很高兴听到:)
$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.