分组列表<;对象>;进入列表<;列表<;对象>>;
本文关键字: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();