在循环遍历 C# 中的列表时按数字父子关系对元素进行排序

Sorting elements by number parent-child relationship while looping through a list in c#

我有这样一个列表;

List<int> numbers = new List<int>
    {
        2,
        4,
        4,
        2,
        4,
        4,
        6,
        6,
        8,
        2,
        4
    };

我想把它列在下面

2
        4
        4
2
        4
        4
            6
            6
                8
2
        4

请注意,这些是动态列表。 2 是主要元素 4 是 2 的子元素等..

我用这个例子来进行更简单的解释,我真正想做的是通过带有标签索引的父子关系列出 HTML 个元素。

在此解决方案中列出的理想方式是什么?

根据您的值添加缩进

var list = numbers
    .Select(i => new string('\t', i / 2 - 1) + i)
    .ToList();

这里有两种方法。

使用 <pre> 和 '\t':

@foreach (var number in numbers)
{
    <div class="d-flex flex-row"><pre>@(new string('\t',number))</pre>@number</div>
}

使用选择的渲染片段:

@foreach (var number in numbers)
{
    <div class="d-flex flex-row">
        @for (var i = 0; i < number; i++)
            @SomeGap

        @number
    </div>
}
@code {
    List<int> numbers = new List<int>
    {
        ...
    };

    RenderFragment SomeGap => @<div>gap</div>;
    
}

您可以通过使呈现片段成为参数或静态来进一步扩展第二种方法。在分层排列中,您可以将深度作为参数传递;