首页 文章

如何使用web api odata获取子记录的总和?

提问于
浏览
4

如何在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

2 回答

  • 0

    对于OData v4,Web API 2.2中尚未实现数据聚合扩展 . 在.NET OData库的Github存储库上提供了对ODataLib级别实现的拉取请求:https://github.com/OData/odata.net/pull/6但尚未合并到主分支中 .

  • 1

    解决方案是使用 .QueryByCube LINQ运算符(www.adaptivelinq.com)实现WebAPI控制器 .

    免责声明:我是AdaptiveLINQ开发人员 .

相关问题