Recursion之Demo
Model:
public class PerSon { [DisplayName("标识id")] public string id { get; set; } [DisplayName("名称")] public string name { get; set; } [DisplayName("年龄")] public int age { get; set; } [DisplayName("父级")] public int? PerSonId { get; set; } /// <summary> /// 该分类的子分类 /// </summary> public List<PerSon> items { get; set; } }
Code:
class Program { static List<PerSon> list = new List<PerSon>() { new PerSon(){ id = "1", age=21, name="张飞1", PerSonId = null }, new PerSon(){ id = "2", age=22, name="张飞7", PerSonId = null }, new PerSon(){ id = "3", age=23, name="张飞8", PerSonId = null }, new PerSon(){ id = "4", age=24, name="张飞5", PerSonId = 1 }, new PerSon(){ id = "5", age=25, name="张飞4", PerSonId = 2 }, new PerSon(){ id = "6", age=27, name="张飞3", PerSonId = 3 }, new PerSon(){ id = "7", age=28, name="张1", PerSonId = 3 }, new PerSon(){ id = "8", age=29, name="张2", PerSonId = 4 }, new PerSon(){ id = "9", age=30, name="张飞1", PerSonId = 5 }, }; static void Main(string[] args) { var ViewData = new List<PerSon>(); list.ForEach((u) => { if (u.PerSonId == null) { ViewData.Add(new PerSon() { age = u.age, id = u.id, name = u.name, items = getitem(u.id) }); } }); var a = ViewData; } public static List<PerSon> getitem(string id) { List<PerSon> perSons = new List<PerSon>(); foreach (var items in list) { if (items.PerSonId.ToString() == id) { perSons.Add(new PerSon() { age = items.age, id = items.id, name = items.name, PerSonId = Convert.ToInt32(id), items = getitem(items.id) }); } } return perSons; } }