Я использую OData v4 с WebAPI с этими NuGet-пакетов:
Microsoft.AspNet.WebApi.OData 4.0.30506
Я не могу groupby
работать со счетом. Это должна быть самая простая вещь.
У меня есть простая таблица/объект под названием 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
, но это похоже на Microsoft doesn't support it yet.
Как использовать group by
вместе с простым count
с OData v4?
Похоже, что это не может быть поддержан еще: HTTPS : //github.com/OData/WebApi/issues/773 – TomDoesCode
@TomDoesCode, да. У меня есть одна и та же ссылка в моем вопросе, но я надеялся, что это можно сделать по-другому. – smoksnes
О да, я вижу это сейчас, извините! (Я обвиняю свои изворотливые цвета экрана, чтобы не обнаружить ссылку) – TomDoesCode