Asp.net web api 集合属性上的OData$orderby子句
我有以下课程:Asp.net web api 集合属性上的OData$orderby子句,asp.net-web-api,odata,Asp.net Web Api,Odata,我有以下课程: public class Parent { public string ParentProp { get; set; } public IEnumerable<Child> ManyChildren { get; set; } } public class Child { public string ChildName { get; set; } public int Value { get; set; } }
public class Parent
{
public string ParentProp { get; set; }
public IEnumerable<Child> ManyChildren { get; set; }
}
public class Child
{
public string ChildName { get; set; }
public int Value { get; set; }
}
我知道我可以编写自定义操作()来为我进行排序,但我宁愿使用$orderby
子句。
(唯一提出类似问题的是有点过时-这取决于您的OData服务实现。您使用哪种服务?WCFDS、WebAPI还是您自己实现的服务 Url解析器可以解析Url,例如root/People?$orderby=Company/Name。翻译器由服务实现
我同意相关问题的答案:“不可能对基数为多的导航属性执行此操作”。由于它有许多基数,服务无法知道应该使用哪一个进行排序。正如我尝试的那样,在$expand中嵌套$orderby是可能的,因此将:
odata/User?&$select=Active,Description,Name,UserId&$expand=Company($select=Active,Name,CreatedBy,CompanyId;$orderby=Active asc)
你得到的是这样的东西:
ORDER BY [Project2].[UserId] ASC, [Project2].[C19] ASC
将分别为每个用户订购公司收藏
我认为在OData Client for.NET 6.7.0版本中受支持,在发行说明中写:
在查询选项中
$id、$select、$expand(包括嵌套查询选项)
我在版本6.1中看到嵌套选项的值存在,并且位于:
DataQueryOptions->SelectExpand->SelectExpandClasue->SelectedItems->ExpandNavigationItem->OrderByOption
但它不起作用
我尝试了System.Web.OData 5.6和所有相关的依赖项,但seams不起作用
我的结论是:
像DataQueryOptions一样准备就绪的接缝存在嵌套的orderby,但不起作用
我发现标准接缝正朝着那个方向发展。
ORDER BY [Project2].[UserId] ASC, [Project2].[C19] ASC