首页 > 解决方案 > 如何使用 Linq 通过嵌套列表的属性对对象列表进行排序?

问题描述

假设我有一个组列表。每个组都有一个人员列表。如何按年龄最小的人对组进行排序?

var groups = new List<Group>{groupA, groupB, groupC};

public class Group {
   public string Name {get; set;}
   public List<Person> Members {get; set;}
}

public class Person {
    public string Name {get; set;}
    public double Age {get; set;}
}

标签: c#listlinqsorting

解决方案


您可以使用每个组的列表年龄的OrderBy方法MinMembers

var groups = new List<Group>
{
    new Group {Name = "group1", Members = new List<Person> {new Person {Age = 5}, new Person {Age = 2}}},
    new Group {Name = "group2", Members = new List<Person> {new Person {Age = 3}, new Person {Age = 4}}},
    new Group {Name = "group3", Members = new List<Person> {new Person {Age = 1}}}
};
var result = groups.OrderBy(g => g.Members.Min(m => m.Age));

在上面的示例中,它为您提供group3(最小Age为 1)、group1(最小Age为 2)、group2(最小Age为 3)顺序


推荐阅读