C#:根据属性拆分列表

时间:2018-02-27 13:08:07

标签: c#

我有一个列表,其中包含本书的属性,例如章节名称和部件名称。这些是动态的,可能会有所不同。

 List<TOCModel> li = new List<TOCModel>();

TOCModel类包含

public class TOCModel
    {
        public string Header { get; set; }
        public string Part { get; set; }
    }

从这个列表中,我需要在前端创建单独的

  • 元素,如

    Part 1
     Chapter 1
     Chapter 2
     Chapter 3
    Part 2
        ... 
        ...
        ... and so on. 
    

    由于列表是动态的,我甚至可以获得10个以上的部分,因此无法使用if或for循环。谁能说出如何实现这一目标呢?

  • 1 个答案:

    答案 0 :(得分:3)

    使用LINQ可以轻松完成。请参阅以下代码片段,了解如何在控制台上输出分组章节,但是 - 当然 - 您不会被限制在那个

    var groupedTocs = li.GroupBy(toc => toc.Part);
    foreach(var part in groupedTocs)
    {
        Console.WriteLine(part.Key);
        foreach(var chapter in part)
        {
            Console.WriteLine($"\t{chapter.Header}");
        }
    }