OData V4:如何对单个$ count值求和

时间:2019-10-09 14:03:27

标签: odata

我有以下OData V4查询:

.../odata/Locations/?$select=Id&$filter=(Id eq 9bb29421-5160-4546-b87f-a78c0074f5c5 or Id eq 8b2a9727-a642-446e-b992-76c6d1584989)&$expand=Assets($select=Id;$filter=ParentAssetId eq null;$expand=Jobs($select=Id;$count=true;$top=0))

具有预期的结果:

{
    "@odata.context": ".../odata/$metadata#Locations(Id,Assets(Id,Jobs(Id)))",
    "value": [
        {
            "Id": "8b2a9727-a642-446e-b992-76c6d1584989",
            "Assets": [
                {
                    "Id": "540d0855-aa1c-4e94-9d0b-332c99ec00b6",
                    "Jobs@odata.count": 2,
                    "Jobs": []
                },
                {
                    "Id": "6dcaa0e8-fc31-4d86-9f1a-a64300f8815c",
                    "Jobs@odata.count": 1,
                    "Jobs": []
                },
                {
                    "Id": "db4cf86b-9f42-4a99-b7b4-a64300f8c740",
                    "Jobs@odata.count": 1,
                    "Jobs": []
                }
            ]
        },
        {
            "Id": "9bb29421-5160-4546-b87f-a78c0074f5c5",
            "Assets": [
                {
                    "Id": "08a2a046-86c1-41a9-b2b1-a7ac007bed64",
                    "Jobs@odata.count": 1,
                    "Jobs": []
                },
                {
                    "Id": "2b76dad1-4058-4261-8a40-a7af00cb8bd5",
                    "Jobs@odata.count": 1,
                    "Jobs": []
                },
                {
                    "Id": "3a5472a1-68c4-4dc4-b2cd-a797007b0068",
                    "Jobs@odata.count": 2,
                    "Jobs": []
                }
            ]
        }
    ]
}

如何求和 Jobs@odata.count 值并返回一个值: 8

我尝试了一些&$ apply = aggregate(Assets/Jobs@odata.count,总和为总和),但这是不正确的语法:(

1 个答案:

答案 0 :(得分:0)

我通过更改查询角度来解决此问题,并从头算起Jobs:

.../odata/Jobs/$count/?$expand=Asset($select=LocationId)&$filter=Asset/LocationId in (9bb29421-5160-4546-b87f-a78c0074f5c5, 8b2a9727-a642-446e-b992-76c6d1584989)