无限极递归树形

递归方法

public void LoopToAppendChildren(List<NewsType> all, NewsType curItem)
        {
            var subItems = all.Where(ee => ee.ParentId == curItem.Id).ToList();
            curItem.children = new List<NewsType>();
            curItem.children.AddRange(subItems);
            foreach (var subItem in subItems)
            {
                LoopToAppendChildren(all, subItem);//新闻1.1
            }
        }

类型

public class NewsType
        {
             public int Id { get; set; }

             public int ParentId { get; set; }

             public string Name { get; set; }


             public List<NewsType> children { get; set; }
        }

调用方法

public void ddd()
        {
            NewsType rootRoot = new NewsType
            {
                Id = 0,
                ParentId = 0,
                Name = "根节点"
            };

            var dc = new List<NewsType>()
            {
                new NewsType {Id = 1,
                ParentId = 0,
                Name = "1"
                },
                new NewsType {Id = 2,
                ParentId = 0,
                Name = "2" },
                new NewsType {Id = 3,
                ParentId = 1,
                Name = "1.1" },
                new NewsType {Id = 4,
                ParentId = 1,
                Name = "1.2" },
                new NewsType {Id = 5,
                ParentId = 2,
                Name = "2.1" },
                new NewsType {Id = 6,
                ParentId = 2,
                Name = "2.2" },
                new NewsType {Id = 7,
                ParentId = 3,
                Name = "1.1.1" },
                new NewsType {Id = 8,
                ParentId = 3,
                Name = "1.1.2" },
            };

            LoopToAppendChildren(dc, rootRoot);
        }

  

posted @ 2016-09-07 19:00  mimo0  阅读(193)  评论(0)    收藏  举报