树递归写法ref实现

using System;
using System.Collections.Generic;
using System.Linq;

namespace ConsoleAppTest
{
    class Program
    {
        static void Main(string[] args)
        {
            var aa = new AA();
            var tree = new Tree() { Id = 1, Name = "1" };
            aa.CreateTree(ref tree);
            Console.WriteLine();
        }
    }

    public class Tree
    {
        public Tree()
        {
            Childrens = new List<Tree>();
        }
        public int Id { get; set; }
        public string Name { get; set; }
        public List<Tree> Childrens { get; set; }


    }

    public class Product
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Fid { get; set; }
    }

    public class AA
    {
        List<Product> Products = new List<Product>() {
                new Product(){Id=2,Name="2",Fid=1},
                new Product(){Id=3,Name="3",Fid=1},
                new Product(){Id=4,Name="4",Fid=2},
                new Product(){Id=5,Name="5",Fid=3},
                new Product(){Id=6,Name="6",Fid=4},
                new Product(){Id=7,Name="7",Fid=5},
                new Product(){Id=8,Name="8",Fid=6},
                new Product(){Id=9,Name="9",Fid=8},
            };

        public void CreateTree(ref Tree tree)
        {
            var id = tree.Id;
            var list = Products.Where(x => x.Fid == id).ToList();
            if (list.Any())
            {
                foreach (var item in Products.Where(x => x.Fid == id).ToList())
                {
                    var treeSon = new Tree
                    {
                        Id = item.Id,
                        Name = item.Name
                    };
                    tree.Childrens.Add(treeSon);
                    Console.WriteLine($"{tree.Id}");
                    CreateTree(ref treeSon);
                }
            }
            else
            {
                Console.WriteLine($"{tree.Id}");
            }
        }
    }
}

运行结果

.

 

转载于:https://www.cnblogs.com/lgxlsm/p/10493310.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值