我从一个非常简单的Web API项目得到以下输出,我想过滤掉没有将Children-property设置为null的所有“实体”。无论如何要做到这一点吗? OData-Query是吗?
接下来的问题是..是否可以创建一个查询,该查询返回名称以Emma开头的所有“父母”?
最后一个问题..是否可以使用“父”中的属性范围缩小...例如我可能想要根据“父”的年龄创建一个查询但我只想查看那个父母的孩子......在那里“范围”下来,所以输出只显示孩子们将是一个非常整洁的功能..
这是我的网址: {MYDOMAIN} / API /人/儿童$滤波器=儿童
这是我的XML:
<ArrayOfPerson xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://schemas.datacontract.org/2004/07/MvcApplication5.Models">
<Person>
<Age>12</Age>
<Children i:nil="true"/>
<Name>Ada Svensson</Name>
</Person>
<Person>
<Age>19</Age>
<Children i:nil="true"/>
<Name>Emma Svensson</Name>
</Person>
<Person>
<Age>43</Age>
<Children>
<Person>
<Age>12</Age>
<Children i:nil="true"/>
<Name>Ada Svensson</Name>
</Person>
<Person>
<Age>19</Age>
<Children i:nil="true"/>
<Name>Emma Svensson</Name>
</Person>
</Children>
<Name>Bertil Svensson</Name>
</Person>
<Person>
<Age>34</Age>
<Children i:nil="true"/>
<Name>Kalle Persson</Name>
</Person>
</ArrayOfPerson>
提前致谢!
答案 0 :(得分:2)
如果您的服务支持OData V3,那么您可以
/persons?$filter=Children/any()
(注意,如果Children是一个集合,那么它永远不会为null,它只能是空的 - 根据OData规则)。
目前无法过滤父级,然后仅使用普通OData请求子级。您可以过滤父项,然后同时获取父项和子项:
/persons?$filter=<my parent condition>&$expand=Children.