c# 层级list列表 把子级提到父级一级

如果您有一个嵌套的层级列表,想要将子级提到父级的一级,您可以使用C#来重新组织数据结构。以下是一个示例代码,演示了如何实现这个操作。

假设您有一个包含层级信息的`List`,其中T是表示节点的数据类型,节点具有`ID`和`ParentID`属性来表示父子关系。您可以使用以下代码将子级提到父级的一级:

```csharp
using System;
using System.Collections.Generic;
using System.Linq;

public class TreeNode
{
    public int ID { get; set; }
    public int ParentID { get; set; }
    // 其他属性...
}

public class Program
{
    public static List FlattenTree(List tree)
    {
        var flatTree = new List();
        var nodesToProcess = new Queue(tree);

        while (nodesToProcess.Count > 0)
        {
            var currentNode = nodesToProcess.Dequeue();
            flatTree.Add(currentNode);

            // 查找子节点并更新ParentID
            var childNodes = tree.Where(node => node.ParentID == currentNode.ID).ToList();
            foreach (var childNode in childNodes)
            {
                childNode.ParentID = currentNode.ParentID; // 更新子节点的ParentID
                nodesToProcess.Enqueue(childNode);
            }
        }

        return flatTree;
    }

    public static void Main()
    {
        // 假设您有一个包含层级信息的树结构
        var tree = new List
        {
            new TreeNode { ID = 1, ParentID = 0 },
            new TreeNode { ID = 2, ParentID = 1 },
            new TreeNode { ID = 3, ParentID = 2 },
            new TreeNode { ID = 4, ParentID = 1 },
            new TreeNode { ID = 5, ParentID = 4 },
            // 更多节点...
        };

        // 调用FlattenTree函数将子级提到父级的一级
        var flatTree = FlattenTree(tree);

        // 打印重新组织后的列表
        foreach (var node in flatTree)
        {
            Console.WriteLine($"ID: {node.ID}, ParentID: {node.ParentID}");
        }
    }
}
```

在这个示例中,我们首先定义了一个表示树节点的`TreeNode`类,每个节点都有一个`ID`和`ParentID`属性。然后,我们编写了一个名为`FlattenTree`的函数,它将原始的嵌套树结构重新组织为一个扁平的列表。在这个过程中,我们更新了子节点的`ParentID`,以将它们提到父级的一级。

请注意,这只是一个简单的示例,您可能需要根据您的数据结构和需求进行适当的调整。希望这个示例能帮助您开始处理嵌套列表的重新组织任务。

你可能感兴趣的:(c#)