如何从linq中的父ID获取所有子元素和大子元素

时间:2016-07-27 10:47:50

标签: sql linq

您好我正在更新我的问题以获得更好的解释。

我有像这样的父子关系的表结构

enter image description here

我已经创建了像这样的模块类

 class MenuModel
{
    public int ID { get; set; }
    public int MenuID { get; set; }
    public string MenuItem { get; set; }
    public Nullable<int> ParentID { get; set; }
    public string ImagePath { get; set; }

    public List<MenuModel> Children { get; set; }
}

现在我想列出具有menuid 10的根节点重新排序服务。

这就是我所做的

 List<MenuModel> lstMenu = new List<MenuModel>();
        NeelamWPFEntities _entity = new NeelamWPFEntities();
        var recordlist = _entity.Menus.Where(x => x.MenuID == 10 || x.ParentID == 10).ToList();

        foreach (var item in recordlist)
        {

            MenuModel objMenu = new MenuModel();
            objMenu.ID = item.ID;
            objMenu.MenuID = item.MenuID;
            objMenu.MenuItem = item.MenuItem;
            objMenu.ParentID = item.ParentID;
            objMenu.ImagePath = item.ImagePath;
            lstMenu.Add(objMenu);


        }
        lstMenu.ForEach(v => v.Children = lstMenu.Where(vv => vv.ParentID.Equals(v.MenuID)).ToList());
        lstMenu = lstMenu.Where(u => u.ParentID == null).ToList();

        return lstMenu;
通过这种方式,我将只获得2级孩子。如何获得根目录重新排序服务的N级孩子。

Plaese帮助, Thankx

1 个答案:

答案 0 :(得分:-1)

你不能做那样的事吗

foreach(var correctParent in recordlist){
   var grandChild = _entity.Menus.Where(x => x.ParentID == correctParent.MenuID).ToList();
   //add your grandChild in a listOfAllGrandChild ...
    }

将所有grandChild添加到一个实体中,然后将grandChild和recordList相加,并对其进行区分吗?