如何在多个集合中进行排序

public class Test
{
    public int id{get;set;}
    public IEnumerable<Test1> test1{get;set;}
}

public class Test1
{
    public int id{get;set;}
    public IEnumerable<Test2> test2{get;set;}
}

public class Test2
{
    public int id{get;set;}
    public IEnumerable<Test3> test3{get;set;}
}

public class Test3
{
    public int id{get;set;}
    public string name{get;set;}
}

这是我的模型的样子,我想使用名称列按此列表排序

IList<Test> test = ... ;

test = test .OrderBy(p => p.test1.select(o=>o.test2.Select(m => m.test3.Select(x => x.name))));

我正在为来自宇宙数据库的列表进行排序

但是它引发了一些错误,请有人帮我解决这个问题

{
 "message": "Message: {\"errors\":[{\"severity\":\"Error\",\"message\":\"Unsupported ORDER BY clause. ORDER BY item expression could not be mapped to a document path.\"}]}\r\nactivityId: 3761139f-cc41-49a5-874e-1b62efa8a8d5,microsoft.Azure.Documents.Common/2.7.0,Windows/10.0.18362 documentdb-netcore-sdk/2.8.1","version": 0,"errorCode": null,"result": null,"errors": []
}
iceman4019 回答:如何在多个集合中进行排序

您的代码有很多问题吗,这一行完全可以编译吗?

test = test .OrderBy(p => p.Test1.Test2.Select(m => m.Test3.Select(x => x.name)));
  

p.Test1

我认为这是一个拼写错误,在您的班级上应该是test1(而不是大写T的班级名称)。

如果以上内容是拼写错误,并且在您的实际代码中确实是p.test1,那么再次查看您的类test1是一个枚举,您不能说

  

test1.test2

我认为整个事情不会编译。现在回到您的原始问题,您可以根据其名称对test3进行排序,然后将已排序的列表分配给Test2对象test3成员,但是如果您说要按test3的name属性对test进行排序,则有点奇怪。 / p>

,

请检查此代码,它是否有效

     IList<Test> test = new List<Test>() { new Test() { id=1,test1=new List<Test1>() {
            new Test1(){ id=1,test2=new List<Test2> (){ new Test2() {  id=1,test3=new List<Test3> (){
                new Test3() { id=1,name="Hello"},new Test3() { id=2,name="welcome"} }
            } } } }
        } };

        test = test.OrderBy(p => p.test1.Select(m => m.test2.Select(x => x.test3.Select(a => a.name)))).ToList();
本文链接:https://www.f2er.com/3169119.html

大家都在问