LINQ通过内部列表的属性对外部列表进行排序

时间:2019-12-03 14:12:32

标签: c# asp.net list linq

我想根据每个对象的Method集合的第一个元素的OtherName属性对Method2个对象的集合进行排序。

public class Method
{
    public IEnumerable<Method2> Method2{ get; set; }
}

public class Method2
{
    public string OtherName {get;set;}
}

代码

// generate test data
var rnd = new Random();
var collection = Enumerable.Range(0, 5).Select(x => {
   var m = new Method();
   m.Method2 = new Method2[] { new Method2 { OtherName = rnd.Next(10).ToString() } };
   return m;
});

// sort outer list by OtherName property of first element in inner list
// ??????

2 个答案:

答案 0 :(得分:2)

在编写时,您想要这样:

  

使用内部列表的第一项进行外部列表的排序

var sorting = methodList.OrderBy(x => x.Method2.FirstOrDefault()?.OtherName).ToList();

答案 1 :(得分:1)

要按子列表中“第一”排序的项目进行排序,请使用First

var sorting = methodList.OrderBy(x => x.Method2
                                       .OrderBy(n => n.Name)
                                       .FirstOrDefault())
                        .ToList();

如果Method2已经排序,则只需取出内部的'OrderBy'