使用lambda从对象及其列表创建泛型列表

本文关键字:列表 创建 泛型 lambda 对象 使用 | 更新日期: 2023-09-27 18:13:15

我试图从一个对象中创建一个"平面"对象的通用列表,其中包含一个项目列表。我将在下面解释:

public class Student
{
   public string Name;
   public string Age;
}
public class Classroom
{
   public string Name;
   public List<Student> Students;
}

我现在有一个名为List<Classroom> Classrooms的教室对象列表,每个对象都填充了一个学生列表,我所需要的是一个通用列表,它将包含每个教室和所有教室中的每个学生的以下信息:

{Classroom.Name, Student.Name, Student.Age}

使用lambda从对象及其列表创建泛型列表

您可以使用SelectMany Linq扩展名:

Classrooms.SelectMany(classroom => classroom.Students.Select(student => new 
{ 
    ClassroomName = classroom.Name, 
    StudentName = student.Name, 
    StudentAge = student.Age 
}))

你可以这样得到你想要的:

var results = (
    from room in Classrooms
    from student in room.Students
    select new { Room=room.Name, student.Name, student.Age }
).ToList();

这将获得匿名类型的实例列表。也许最好声明一个类并使用它——new MyClass(room.Name, etc)而不是new { Room=room.Name, etc }