【问题标题】:how to get all child and grand child elements from parent ID in linq如何从linq中的父ID获取所有子元素和孙子元素
【发布时间】:2016-07-27 10:47:50
【问题描述】:

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

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

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

 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 级子级。

请帮助, 谢谢x

【问题讨论】:

  • 那是递归的,这意味着你的表设计得不好。
  • 你需要recursive CTE,它不支持LINQ。
  • 你设计得不好。我提供了父子关系。

标签: sql linq


【解决方案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 相加,并对其进行区分?

【讨论】:

  • 感谢您的回复..我已经更新了我的问题请检查。它会更好地解释
猜你喜欢
  • 2013-08-24
  • 1970-01-01
  • 2019-02-19
  • 2019-07-10
  • 2013-06-13
  • 1970-01-01
  • 2012-05-03
  • 2016-05-11
  • 2014-11-18
相关资源
最近更新 更多