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}"); } } } }
运行结果
.