gpt4 book ai didi

c# - 在 ODataController 中添加 WebAPI OData $orderby 选项

转载 作者:行者123 更新时间:2023-11-30 22:06:43 28 4
gpt4 key购买 nike

我编写了一个继承自 ODataController 的 OData WebAPI Controller .

public class ManyColumnsController : ODataController
{
[Queryable(
AllowedOrderByProperties = "Aa,Bb,Cc,Dd",
EnsureStableOrdering = false,
MaxOrderByNodeCount = 2)]
public IQueryable<ManyColumn> GetManyColumns(
ODataQueryOptions<ManyColumn> options)
{
// Because I've disabled EnsureStableOrdering,
// I need to check column "Dd" is always included
// in the OrderBy option.
if (!options.OrderBy.RawValue.Contains("Dd")
{
// I need to add an OrderByPropertyNode to
// options.OrderBy.OrderByNodes.
}

return this.context.ManyColumns;
}
}

如何实例化 OrderByNode添加到 OrderByQueryOption 公开的通用集合中?


您会注意到 OrderByNode 的一个构造函数需要 IEdmProperty .我觉得应该有一些简单的方法来找到 IEdmProperty 的实例来自 IEdmModel暴露于 options.Context.Model.IEdmTypeoptions.Context.ElementType .

如果这是可行的,我可以使用实例代替 if 语句中的字符串搜索。除了将它添加到整个 OrderByClause 之外。

最佳答案

IEdmEntityType entityType=options.Context.ElementType as Microsoft.OData.Edm.IEdmEntityType;
IEdmStructuralProperty property = entityType.DeclaredStructuralProperties().Single(p => p.Name == "Dd");
IEdmType edmType=property.Type.Definition;

关于c# - 在 ODataController 中添加 WebAPI OData $orderby 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23433017/

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