OData不是运算符,或者如何过滤所有不以(...)开头的项目

时间:2014-10-15 14:16:29

标签: odata

我使用的是SharePoint REST API,它类似于OData,但目前我甚至不知道标准的OData方式。我想过滤不以某种字符串模式开头的项目。如何在OData中编写'not'运算符?所有引用列出'和'和'或'运算符和'ne'运算符,但我找不到'not'。

以下任何一项工作都没有:

A)

  not startswith(field, 'pattern')

b)中

 startswith(field, 'pattern') ne true // Yes I know there is no 'true' boolean literal.

1 个答案:

答案 0 :(得分:2)

即使Use OData query operations in SharePoint REST requests的图表说明startswith运算符的正确语法是:

filter=startswith(PropertyName, 'String') Eq Boolean

它似乎唯一接受的语法是:

filter=startswith(PropertyName, 'String')

例如,请求:

/_vti_bin/listdata.svc/Pages?$filter=startswith(Title,'SharePoint') eq false

返回Title不以SharePoint

开头的网页

但使用_api服务端点

的相同请求
/_api/Web/Lists/getByTitle('Pages')/items?$filter=startswith(Title,'SharePoint') eq false

返回The query is not valid例外。

<强>解决方案

利用listdata.svc端点,因为完全支持 OData specification中指定的startswith运算符的语法。