Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用OData按长度筛选字段_Odata - Fatal编程技术网

使用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

我遇到了一个奇怪的情况,我把一些数字作为文本存储在数据库中。由于不太熟悉OData,我正在尝试编写一个查询,将这些字符串作为实际数字处理

$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.