簡體   English   中英

從復雜對象獲取有序列表的最佳方法是什么,其中列表元素來自第二代子集合

[英]what is the best way to get an ordered list from a complex object where the list elements are from a second generation child collection

我是MVC的新手,我正在嘗試顯示第二代集合的有序列表。 而不是將問題與我的特定數據集混淆; 請告訴你如何從ConsotoUniversity的例子中做到以下幾點。 教師有一系列課程。 課程有一系列的學生

我如何為每位老師列出姓氏的所有學生。 假設viewModel有Instructor.Courses.Students,我知道在視圖中我可以做到

@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>
        }
    }
}

但這只會按順序打印名稱,所以如果我有兩門課程:與學生一起編碼和數學:Coding = John Jones和Tim Green,Maths = Adam Smith和Aaron Aardvark我會得到一個如下列表:

  • 綠色,添
  • 瓊斯,約翰
  • Aarvark,Aaron
  • 史密斯,亞當

但我想要的是:

  • Aarvark,Aaron
  • 綠色,添
  • 瓊斯,約翰
  • 史密斯,亞當

在我的特定用例中,不會有重復的學生。

您可以使用SelectMany()將子列表聚合到單個列表中,然后對其進行排序。 像這樣的東西:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM