如何在web api odata中返回OrderItems价格(ItemTotalPrice)的总和?
看起来web api odata不支持$ apply,如下所述:http://docs.oasis-open.org/odata/odata-data-aggregation-ext/v4.0/cs01/odata-data-aggregation-ext-v4.0-cs01.html#_Aggregation_Methods_1
我有一个web api odata查询,如:
http://localhost:29446/odata/OrderItems
返回以下json:
{
"odata.metadata": "http://localhost:29446/odata/$metadata#OrderItems",
"value": [{
"OrderItemID": 17,
"ItemDescription": "test",
"ItemQty": 1,
"ItemUnitPrice": "1.10",
"ItemTaxGroup": 1,
"ItemTotalTax": "0.10",
"ItemTotalPrice": "1.22",
"ItemSubProgram": 1,
"ItemAccount": 1,
"ItemActualCost": "1.22",
"OrderID": 3
}, {
"OrderItemID": 18,
"ItemDescription": "test",
"ItemQty": 1,
"ItemUnitPrice": "1.10",
"ItemTaxGroup": 1,
"ItemTotalTax": "0.10",
"ItemTotalPrice": "1.10",
"ItemSubProgram": 1,
"ItemAccount": 1,
"ItemActualCost": "1.00",
"OrderID": 3
}, {
"OrderItemID": 19,
"ItemDescription": "test",
"ItemQty": 1,
"ItemUnitPrice": "1.10",
"ItemTaxGroup": 1,
"ItemTotalTax": "0.10",
"ItemTotalPrice": "1.10",
"ItemSubProgram": 1,
"ItemAccount": 1,
"ItemActualCost": "1.00",
"OrderID": 3
}, {
"OrderItemID": 20,
"ItemDescription": "test",
"ItemQty": 1,
"ItemUnitPrice": "1.10",
"ItemTaxGroup": 1,
"ItemTotalTax": "0.10",
"ItemTotalPrice": "1.10",
"ItemSubProgram": 1,
"ItemAccount": 1,
"ItemActualCost": "1.00",
"OrderID": 3
}, {
"OrderItemID": 21,
"ItemDescription": "test",
"ItemQty": 1,
"ItemUnitPrice": "1.10",
"ItemTaxGroup": 1,
"ItemTotalTax": "0.10",
"ItemTotalPrice": "1.10",
"ItemSubProgram": 1,
"ItemAccount": 1,
"ItemActualCost": "1.00",
"OrderID": 3
}]
}
我认为下面的内容可能有效:
http://localhost:29446/odata/OrderItems?$apply=aggregate(ItemTotalPrice with sum as Total)
但是我收到以下错误:
The query parameter '$apply' is not supported.
我正在使用ODAP v4和Web API 2.2
答案 0 :(得分:1)
在ODAP v4的Web API 2.2中尚未实现数据聚合扩展。有一个关于.NET OData库的Github存储库贡献的ODataLib级别实现的拉取请求:https://github.com/OData/odata.net/pull/6但尚未合并到主分支中。
答案 1 :(得分:0)
解决方案是使用.QueryByCube
LINQ运算符(www.adaptivelinq.com)实现Web API控制器。
免责声明:我是自适应LINQ开发人员。