Rendering a hierarchy using LINQ?

前端 未结 6 1023
终归单人心
终归单人心 2020-12-10 08:05

Let say we have a class

Category
{
   ID,
   Name,
   ParentID
}

and a List

1, \'Item 1\', 0
2, \'Item 2\', 0
3, \'Item 3\'         


        
6条回答
  •  执念已碎
    2020-12-10 08:47

     public IEnumerable GetHelpPageMenuItems()
        {
            var helpPages = (from h in Context.HelpPages select new HelpPageMenuItem{HelpPageId = h.HelpPageId, ParentHelpPageId = h.ParentHelpPageId, PageContext = h.PageContext, MenuText = h.MenuText}).ToList();
            var parents = from h in helpPages where !h.ParentHelpPageId.HasValue select PopulateChildren(h, helpPages);
            return parents.ToList();
        }
    
        private static HelpPageMenuItem PopulateChildren(HelpPageMenuItem helpPageMenuItem, IEnumerable helpPages)
        {
            helpPageMenuItem.ChildHelpPages =
                (from h in helpPages
                 where h.ParentHelpPageId == helpPageMenuItem.HelpPageId
                 select PopulateChildren(h, helpPages)).ToList();
    
            return helpPageMenuItem;
        }
    

提交回复
热议问题