委托递归子级树

//定义树实体类

public class CityTreeView
    {
            public int id { get; set; }
            public int ParentId { get; set; }
            public string name { get; set; }
            public List<CityTreeView> children { get; set; }
        }

 public ActionResult GetCityTree()
        {       
            List<CityTreeView> list = new List<CityTreeView>();
            list.Add(new CityTreeView() { id = 1, ParentId = 0, name = "湖南省" });
            list.Add(new CityTreeView() { id = 2, ParentId = 1, name = "长沙市" });
            list.Add(new CityTreeView() { id = 3, ParentId = 2, name = "芙蓉区" });
            list.Add(new CityTreeView() { id = 4, ParentId = 1, name = "岳阳市" });
            list.Add(new CityTreeView() { id = 5, ParentId = 4, name = "岳阳楼区" });

            list.Add(new CityTreeView() { id = 6, ParentId = 0, name = "广东省" });
            list.Add(new CityTreeView() { id = 7, ParentId = 6, name = "深圳" });
            list.Add(new CityTreeView() { id = 8, ParentId = 7, name = "龙华区" });
            list.Add(new CityTreeView() { id = 9, ParentId = 6, name = "广州" });
            list.Add(new CityTreeView() { id = 10, ParentId = 9, name = "白云区" });

            Func<int, List<CityTreeView>> GetTree = null;
            GetTree = new Func<int, List<CityTreeView>>((parentid) => {
                var r = list.Where(p => p.ParentId == parentid).ToList();
                if (r.Count() > 0)
                {
                    foreach (var item in r)
                    {
                        item.children = GetTree(item.id);
                    }
                }
                return r;
            });
            var results = GetTree(0).Where(s => s.children != null && s.children.Count > 0).ToList();         
            return Json(results,JsonRequestBehavior.AllowGet);
        }

posted @ 2020-06-08 13:09  开心★就好  阅读(184)  评论(0)    收藏  举报