我有一個簡單的人員層次結構(EntityFramework Codefirst)。將層次結構展平爲明確排序的列表
public class Person
{
[Key]
public int Id { get; set; }
public int? ParentId { get; set; }
[Required]
public string Name { get; set; }
// Navigation
[ForeignKey("ParentId")]
public virtual Person Parent { get; set; }
public virtual ICollection<Person> Children { get; set; }
}
我的目標:
我需要創建這是(1)由家長聚集和(2)按字母順序排序按名稱每個級別一個List<Person>
的方法:
輸出示例:
- Alfred
- 奔(阿爾弗雷德的兒子)
- 馬里昂(阿爾弗雷德的女兒)
- 拉爾夫(阿爾弗雷德的兒子)
- 恭
- 盟友(恭的女兒)
- 戴夫
- 多麗絲
- 詹姆斯(多麗絲的兒子)
- 克拉斯(多麗絲的兒子)
阿爾弗雷德,恭,戴夫和多麗絲都是父母。它們按字母順序排序。他們都有孩子(戴夫除外)。孩子們也按照字母順序排序(並且在列表中他們出現「與父母分組」)。 「的兒子」和「女兒」只是你們的評論(我不需要在結果列表中)。
我可以很容易地創建這種類型的嵌套循環列表。但我相信這不會很有效率或優雅。但也許我錯了。
你們有沒有人有一個好主意/建議(也許與LINQ)?謝謝!!
哦,我應該提到,層次結構只有2級。所以,只有父母和孩子(但沒有孫子)。
這就是我正在尋找的!謝謝,克林特! – Ingmar
這是否列出孩子? – artm
是的,只要他們在「人」 –