gpt4 book ai didi

c# - 在核心的 odataqueryoptions 中处理选择?

转载 作者:行者123 更新时间:2023-11-30 18:16:05 27 4
gpt4 key购买 nike

我有一个常规 Controller ,它具有 odata 功能:

[Route("[controller]")]
public class ChannelsController : Controller
{
private readonly ChannelContext db = new ChannelContext();
public IQueryable<PrdChannel> Get()
{
var entities = db.PrdChannel.AsQueryable();
var modelManager = (IODataModelManger) HttpContext.RequestServices.GetService(typeof(IODataModelManger));
var model = modelManager.GetModel(nameof(ProductConfiguration));
var queryContext = new ODataQueryContext(model, typeof(PrdChannel), null);
var queryOptions = new ODataQueryOptions(queryContext, HttpContext.Request);

return queryOptions
.ApplyTo(entities, new ODataQuerySettings
{
HandleNullPropagation = HandleNullPropagationOption.True
})
.Cast<PrdChannel>();
}
}

我可以发出 GET:https://myservice/Channel?$filter=cable lt 10

但是,当我尝试执行 $select 时,它不起作用!

https://myservice/Channel?$select=cable

根据 OdataQueryOptions 的定义,它不支持选择/扩展。

问题:aspnetcore如何支持$select

也许这应该是一个 ODataController?

最佳答案

重复:Can't apply $select when using ODataQueryOptions

要允许在 OData 中支持 $select,您不能将 IQueryable 强制转换为已定义的类型,您需要改用 dynamic 类型。

    public IQueryable<dynamic> Get()
{
... your code ...
return queryOptions
.ApplyTo(entities, new ODataQuerySettings
{
HandleNullPropagation = HandleNullPropagationOption.True
})
as IQueryable<dynamic>;
}

关于c# - 在核心的 odataqueryoptions 中处理选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47104550/

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