Skip to main content
 首页 » 编程设计

c#之从复杂对象中获取有序列表的最佳方法是什么,其中列表元素来自第二代子集合

2024年04月17日42mfrbuaa

我是 MVC 的新手,我正在尝试显示第二代集合的有序列表。而不是将问题与我的特定数据集混淆;请您建议如何从 ConsotoUniversity 示例中执行以下操作。 教师有一系列类(class)。 类(class)有一组学生

我将如何按姓氏列出每位教师的所有学生。假设 viewModel 有 Instructor.Courses.Students 我知道在 View 中我可以做

@foreach (var instructor in @Model.Instructors) 
{ 
    <h2>@instructor.FullName</h2> 
 
    foreach(var course in instructor.Courses) 
    { 
        foreach(var student in course.Students.OrderBy(s=>s.LastName)) 
        { 
            <p>@student.LastName, @student.FirstName</p> 
        } 
    } 
} 

但这只会按类(class)顺序打印姓名,所以如果我有两门类(class):编码和数学与学生:编码 = John Jones & Tim Green,数学 = Adam Smith & Aaron Aardvark 我会得到一个列表,看起来喜欢:

  • 格林,提姆
  • 琼斯,约翰
  • 土豚,亚伦
  • 史密斯,亚当

但我想要的是:

  • 土豚,亚伦
  • 格林,蒂姆
  • 琼斯,约翰
  • 史密斯,亚当

在我的特定用例中,不会有重复的学生。

请您参考如下方法:

您可以使用 SelectMany() 将子列表聚合成一个列表,然后对其进行排序。像这样:

foreach (var student in instructor.Courses.SelectMany(c => c.Students).OrderBy(s => s.LastName)) 
{ 
    <p>@student.LastName, @student.FirstName</p> 
}