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

时间:2015-09-17 05:08:34

标签: c# list lambda

我正在努力创造一个" flat"来自对象的通用对象列表,其中包含项目列表。我将在下面解释:

public int sumSquares(int n){
   int sum = 0;
   for(int i = 1; i <=n; i++){
      sum += i*i;
   }
   return sum;
}

我现在有一个名为public class Student { public string Name; public string Age; } public class Classroom { public string Name; public List<Student> Students; } 的课堂对象列表,每个对象都填充了一个学生列表,我只需要一个通用列表,它将为每个教室和所有教室中的每个学生提供以下信息:

List<Classroom> Classrooms

提前致谢。

2 个答案:

答案 0 :(得分:3)

你可以使用SelectMany Linq扩展名:

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

答案 1 :(得分:2)

你可以得到你想要的东西:

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 }可能更好。