【发布时间】: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。
-
你设计得不好。我提供了父子关系。