添加过滤器到我的odata不起作用

时间:2015-09-16 07:48:28

标签: asp.net-web-api odata

向我的odata添加过滤器无效。

这是我的api:

http://appsworldapiclient.azurewebsites.net/breeze/ClientCursor/GetContactDetails?companyId=4

我必须应用过滤器 $ filter = startswith(FirstName,' A')eq true

如果我没有companyId = 4它的工作正常,但没有它我的api不会工作。 任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

实际上,我认为我真的不明白你在问什么。

从您的终点Uri开始,您似乎想要使用参数GetContactDetails调用名为companyId=4的操作(功能/操作)。

接下来,您提到必须放置$ filter子句。您似乎想要执行以下操作:

http://appsworldapiclient.azurewebsites.net/breeze/ClientCursor/GetContactDetails?companyId=4& $ filter = startswith(FirstName,'A')eq true

如果确实如此,上面的Uri模板不会跟进OData规范。

所以,我认为,

  1. 如果GetContactDetails是未绑定的操作,您可以这样做: 〜/ ClientCursor / GetContactDetails(companyId = 4)?& $ filter = startswith(FirstName,'A')eq true

  2. 如果GetContactDetails是一个实体集,而companyId是关键,你可以简单地这样做: 〜/ ClientCursor / GetContactDetails(4)?& $ filter = startswith(FirstName,'A')eq true

  3. 当然,如果您可以向我们展示更多代码或元数据,它可以帮助我们更清楚地理解。