C# 通用树形结构算法(递归算法)

本文介绍了如何使用C#通过递归方法将FactoryModel列表转换为包含父子关系的FactoryModelTree对象,形成一个树形结构,以便于展示和管理数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

模式一:

现有一表FactoryModel,对应的实体类如下:

public class FactoryModel
{
   
    public string Id {
    get; set; }
    public string Name {
    get; set; }
    public string Code {
    get; set; }
    public string ParentId {
    get; set; }
}

现用C#构造对应的树结构方法示例:

1.新建个FactoryModelTree实体类

 public class FactoryModelTree
 {
   
     public string Id {
    get; set; }
     public string Name {
    get; set; }
     public string Code {
    get; set; }
     public string ParentId {
    get; set; }
     public List<FactoryModelTree> Childs {
    get; set; } = new List<FactoryModelTree>();
 }

2.写出获取Tree的方法

public class FactoryModelHelper
{
   
    public List<FactoryModelTree> GetTree(List<FactoryModel> factoryModels)
    {
   
        var trees = new List<FactoryModelTree>();
        // 首先顶级父节点
        var topParents = factoryModels.Where(i => string.IsNullOrEmpty(i.ParentId)).ToList();

        foreach (var parent in topParents)
        {
   
            var tree = new FactoryModelTree();
            tree.Id = parent.Id;
            tree.Name = parent.Name;
            tree.Code = parent.Code;
            tree.ParentId = null;
            trees.Add(tree);
            BuildTree(factoryModels, tree);
        }
        return trees;
    }

    private void BuildTree(List<FactoryModel> factoryModels, FactoryModelTree parentNode)
    {
   
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值