2016-07-27 40 views
1

您好,我正在更新我的問題以獲得更好的解釋。如何從linq中的父母ID獲取所有子女和大孩子元素

我也有這樣的

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; } 
} 

現在我想有菜單ID 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

+0

這是遞歸的,這意味着你的桌子設計不好。 –

+0

你需要[遞歸CTE](http://stackoverflow.com/search?q=recursive+cte+linq),它沒有LINQ支持。 –

+0

不是很好的設計。我提供了親子關係。 –

回答

-1

你能不能做這樣的

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

一些東西添加所有你的孫子在一個單一的實體,然後總結雙方你的孫子和recordList,並做了不同的在上面 ?

+0

謝謝你的回覆..我已經更新了我的請你的check.it會解釋更好 –

相關問題