gpt4 book ai didi

c# - .Net Core 2.2 中的 OData : how to get total number of items?

转载 作者:太空宇宙 更新时间:2023-11-03 20:50:03 29 4
gpt4 key购买 nike

我使用 OData v7.1 创建了一个新的 .NET Core 2.2 网络应用。

我已经启动并运行它并且已经可以使用 $top、$skip、...

我现在正试图让 $count 正常工作,但我完全不知道该怎么做。

我已经尝试了几个链接,所有这些链接要么不再编译,要么没有产生我想要的结果。

我有什么:

StartUp.cs

app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller}/{action=Index}/{id?}");

routes.EnableDependencyInjection();
routes.Expand().Select().OrderBy().Filter().MaxTop(null).Count();
});

在我的 Controller 类中:

        [EnableQuery]
[HttpGet("[action]")]
public IActionResult All()
{
var assets = _service.GetAllAssets();
return Ok(assets);
}

这会返回所有 Assets ,我可以毫无问题地使用 $top 和 $skip。现在我该如何添加 $count=true 或任何其他允许我也返回我的总计数的方法?我究竟做错了什么?

有效的示例网址: http://localhost/api/Assets/All ?$top=20&$skip=20

无效的网址: http://localhost/api/Assets/All ?$计数=真(它返回所有 Assets )

目前的结果是:

[{Item One}, {Item Two}]

我想要的结果是:

[Count : 4, 
Items: [{Item One}, {Item Two}
]

最佳答案

你可以这样做:

public IActionResult GetData(ODataQueryOptions<YourType> query)
{
var data = _context.SetOfYourType;
return Ok(new
{
Items = query.ApplyTo(data),
Count = query.Count?.GetEntityCount(query.Filter?.ApplyTo(data, new ODataQuerySettings()) ?? data)
});
}

这基本上产生与使用 PageResult 相同的结果,至少在 $expand、$select 和 $count 方面是这样。

关于c# - .Net Core 2.2 中的 OData : how to get total number of items?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56221207/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com