分组列表<;对象>;进入列表<;列表<;对象>>;

本文关键字:gt lt 列表 对象 | 更新日期: 2023-09-27 18:09:53

如何使用LINQ通过Person.Age Group创建List<Person> Persons并创建新的List<List<Person>> PersonsByAge

public class Person
{
    public string Name;
    public int Age
}

分组列表<;对象>;进入列表<;列表<;对象>>;

一个GroupBy和几个ToList调用应该可以完成这项工作:

List<Person> persons = ...;
List<List<Person>> byAge = persons
                           .GroupBy(p => p.Age)
                           .Select(ps => ps.ToList())
                           .ToList();

一种可能的解决方案如下:

var persons = new List<Person>
{
    new Person { Age = 20 },
    new Person { Age = 30 },
    new Person { Age = 20 },
    new Person { Age = 40 },
    new Person { Age = 50 },
    new Person { Age = 50 },
    new Person { Age = 20 }
};
var result =    from person in persons
                group person by person.Age into g
                select g.ToList();
var listOfListOfPersons = result.ToList();

这将创建一个包含List<Person>项的List

另一种可能性是创建一个表示(强类型(List<List<Person>>结构的类:

public class Persons
{
    public List<Person> Entries { get; set; }
}
public class Person
{
    public Int32 Age { get; set; }
}

并像这样填充:

var result =    from person in persons
                group person by person.Age into g
                select new Persons
                {
                    Entries = g.ToList()
                };
var listOfListOfPersons = result.ToList();