Здравствуйте, я обновляю свой вопрос для лучшего объяснения.Как получить все дочерние и дочерние элементы из родительского идентификатора в linq
Я структура таблицы, имеющий родитель потомок как этого
Я создал класс модуля как этого
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
Это рекурсивно, это означает, что ваш стол плохо разработан. –
Вам нужен [рекурсивный CTE] (http://stackoverflow.com/search?q=recursive+cte+linq), который не поддерживает LINQ. –
y не очень хорошо спроектирован. Я предоставил родительско-детские отношения. –