0

我正在尝试为我们的项目服务器查询 Odata 提要中的多个项目,但到目前为止我一直没有成功。我能够获取单个项目名称甚至排除它们,但是当我尝试查询多个项目名称时,我没有得到我想要的结果。也许我的语法是错误的。对此的任何帮助将不胜感激..

当我运行这个时,它会中断并告诉我'and'是一个未知的运算符:

http://$server/pwa/_api/ProjectData/Projects$filter=ProjectName -eq 'name1' 和 'name2'

当我运行它时,它会运行,但它仍然只查看一个值:

http://$server/pwa/_api/ProjectData/Projects$filter=ProjectName -eq 'name1' & 'name2'

根据这篇文章,这将是使用 AND 的上述语句的正确语法,但我被告知语法错误。

https://msdn.microsoft.com/en-us/library/ff478141.aspx

此外,我什至首先阅读了这篇文章,这是对 odata 查询的一般概述,但这并没有真正回答我的问题。

https://msdn.microsoft.com/en-us/library/office/jj163048.aspx

4

2 回答 2

0

@RyanY我发现刚刚意识到我做错了什么这是我使用的逻辑的问题。正如你所说,我的语法是错误的。我之前查过,没有人回复我的帖子。我刚才正要回答我自己的问题,我看到了你的帖子..lol

为了得到我的结果,我所要做的就是发出一个 REST 查询,如下所示:

http://$server/pwa/_api/ProjectData/Projects$filter=ProjectName eq 'name1' 或 ProjectName eq 'name2' 或 ProjectName eq 'name3'..ect

我喜欢这个想法,顺便说一句,我将来会使用它,它会更有条理:?$filter=(Name eq 'name1') or (Name eq 'name2')

感谢您的反馈。我的真名也是瑞恩。多么巧合:)

于 2016-05-25T18:01:45.337 回答
0

我认为您可能需要进行一些更改才能使其以您想要的方式工作:

  1. 根据 $metadata,PublishedProject 实体上的属性名称是“名称”而不是“项目名称”。
  2. 使用条件AND意味着项目名称必须等于“name1”“name2”。我认为您真的想要条件OR,以便项目名称等于“name1”“name2”
  3. 您需要两个由条件 OR 连接的完整表达式,以便过滤具有“name1”或“name2”的项目。
  4. '-eq' 是等式表达式的错误语法。删除连字符并仅使用“eq”(这显示在您链接到的 MSDN 页面上的示例中。)

因此,您的过滤器更改为:

?$filter=Name eq 'name1' or Name eq 'name2'

或者,Url 编码形式:

?$filter=Name+eq+'name1'+or+Name+eq+'name2'

或者,您可以在此查询中使用分组以使其更易于阅读:

?$filter=(Name eq 'name1') or (Name eq 'name2')

免责声明:我只验证了这些过滤器示例适用于 Project Online 实例,而不是 2013 年。

于 2016-05-25T15:22:21.230 回答