【问题标题】:How to get the sum of child records using web api odata?如何使用 web api odata 获取子记录的总和?
【发布时间】:2015-01-23 21:45:52
【问题描述】:

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

我正在使用带有 Web API 2.2 的 OData v4

【问题讨论】:

    标签: odata asp.net-web-api


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2014-10-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多