【发布时间】:2017-05-23 21:09:54
【问题描述】:
我正在使用带有 WebAPI 的 OData v4 和这些 nuget 包:
Microsoft.AspNet.WebApi.OData 4.0.30506
我无法让 groupby 与 count 一起工作。应该是最简单的吧。
我有一个名为Delivery 的简单表/实体。它有一个状态列(在其他几个列中)。我基本上想做的是这个 SQL 查询,但是使用 OData:
SELECT e.status, count(*) AS total
FROM Delivery e
GROUP BY e.status
我试过使用countdistinct,但它没有给我正确的结果。
/odata/deliveries?$apply=groupby((status),aggregate(status with countdistinct as total))
返回:
"value": [
{
"@odata.id": null,
"total": 1,
"status": 1
},
{
"@odata.id": null,
"status": 2,
"total": 1
},
{
"@odata.id": null,
"status": 4,
"total": 1
}
]
正确的结果应该是(这是我的 SQL 查询返回的):
status total
1 2
2 22
4 1
我也读过关于虚拟财产$count,但它似乎是微软doesn't support it yet。
如何在 OData v4 中使用 group by 和简单的 count?
【问题讨论】:
-
看起来可能还不支持:github.com/OData/WebApi/issues/773
-
@TomDoesCode,是的。我的问题中有相同的链接,但我希望可以通过其他方式完成。
-
哦,是的,我现在看到了,对不起! (我责怪我的屏幕颜色不正确,没有发现链接)
-
@TomDoesCode,没有问题。 :) 我很感激任何线索和我能得到的任何帮助。
-
一种解决方案是使用来自AdaptiveLINQ 组件的LINQ 扩展方法
QueryByCube。 (免责声明:我是 AdaptiveLINQ 开发者)。
标签: c# asp.net-web-api odata