Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net web api 集合属性上的OData$orderby子句_Asp.net Web Api_Odata - Fatal编程技术网

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