2016-07-27 8 views
1

Hallo Ich aktualisiere meine Frage für bessere Erklärung.Wie bekomme ich alle Child und Grand Kind Elemente von Eltern ID in linq

Ich habe Tabellenstruktur mit Eltern-Kind-Beziehung wie dieser

enter image description here

i Modul Klasse erstellt haben, wie diese

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

jetzt will ich menuId 10 mit der Wurzelknoten Neuordnen Dienstleistungen zur Liste .

Dies ist, was ich bisher getan habe

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; 

auf diese weise werde ich 2 level child only.how bekomme ich N level childs von root Reordering Services.

Plaese Hilfe, Thankx

+0

Das ist rekursiv, es bedeutet, dass Ihr Tisch nicht gut gestaltet ist. –

+0

Sie benötigen [rekursive CTE] (http://stackoverflow.com/search?q=recursive+cte+linq), die keine LINQ-Unterstützung hat. –

+0

y nicht gut gestaltet. Ich stellte Eltern-Kind-Beziehung zur Verfügung. –

Antwort

-1

Kannst du nicht tun etwas, was wie die

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

alle Ihre Enkelkind in einer einzigen Einheit Hinzufügen und dann beide Summe Ihrem Enkelkind und record und machen einen deutlichen drauf?

+0

danke für deine antwort .. ich habe meine que pls check.it aktualisiert wird es besser erklären –

Verwandte Themen