在Odata查询中避免Null值



在OData V4中,我试图扩展一个对象(这是一个数组)和基于数组对象是否为空的过滤器。例如:请求

ODataService/v1/ODataServiceName.svc/v1/ABCRevisions?$expand=Status

反应

{
"@odata.context": "ODataService/v1/ODataServiceName.svc/v1/$metadata#ABCRevisions(Status())",
"value": [
    {
        "Revision": "A",
        "Identifier": "032103",
        "Status": [
            {
                "type": "Status",
                "Name": "Approved"
            },
            {
                "type": "Status",
                "Name": "Released"
            }
        ]
    },
    {
        "Revision": "A",
        "Identifier": "032097",
        "Status": []
    }]}

基本上,我想过滤的响应"状态"不是

我试了下面这个

ODataService/v1/ODataServiceName.svc/v1/ABCRevisions?$expand=Status($filter=Name ne null)这个方法不起作用

b。ODataService/v1/ODataServiceName.svc/v1/ABCRevisions?$expand=Status/$Order它给了我状态计数,但没有相应地过滤响应反应-

{
"@odata.context": "ODataService/v1/ODataServiceName.svc/v1/$metadata#ABCRevisions(Status())",
"value": [
    {
        "Revision": "A",
        "Identifier": "032103",
        "Status@odata.count": 2        
    },
    {
        "Revision": "A",
        "Identifier": "032097",
        "Status@odata.count": 0
    }]}

有人能告诉我如何过滤对象状态不是空的吗?关于

我会在$filter查询中使用any来只返回具有至少一个状态的实体。

ODataService/v1/ODataServiceName.svc/v1/ABCRevisions?$expand=Status&$filter=Status/any()

或检查count是否不等于0

ODataService/v1/ODataServiceName.svc/v1/ABCRevisions?$expand=Status&$filter=Status/$count ne 0

最新更新