C# 使用linq从c中列表中的sql返回层次结构
我在sql中有一个表,它有三列ID、Name、ParentID,每列都有许多记录。现在我想要的是从ParrentId获得所有Hierarachy,将其包含在三视图中 这可以用一些好的LINQ解决方案来解决吗 我之前尝试的是使用一组列表,其中一个是子列表,但出现问题的原因是某些子列表下也可能有更多的子列表 我需要这个linq代码:C# 使用linq从c中列表中的sql返回层次结构,c#,linq,list,hierarchy,C#,Linq,List,Hierarchy,我在sql中有一个表,它有三列ID、Name、ParentID,每列都有许多记录。现在我想要的是从ParrentId获得所有Hierarachy,将其包含在三视图中 这可以用一些好的LINQ解决方案来解决吗 我之前尝试的是使用一组列表,其中一个是子列表,但出现问题的原因是某些子列表下也可能有更多的子列表 我需要这个linq代码: List<Menu> hList = new List<Menu>(); var m1 = new Menu(); var m2 =
List<Menu> hList = new List<Menu>();
var m1 = new Menu();
var m2 = new Menu();
var m3 = new Menu();
hList.AddRange(new List<Menu>() { m1, m2, m3});
但当然,在实际例子中,它不会只有3个子变量-s
谢谢你的帮助和建议 +1只是一个疯狂的掷骰子,但是像这样的事情不能通过AssociateWith实现吗?您是否正在为T-Sql与UNION的组合寻找等效的linq?您是否使用linq将此数据从数据库映射到Sql或linq到实体?如果是这样,您是否可以修改表,使其具有自引用外键引用ParentID->ID…,当您从数据库检索时,它将自动将您的对象映射到所需的层次结构中。
public void FillMenu(EntityCollection menuList, List<Menu> hList, int? parentMenuId)
{
var g = from m in menuList
where ((MenuEntity)m).ParentMenuId == parentMenuId
select (MenuEntity)m;
foreach (MenuEntity menu in g)
{
var newMenu = new Menu();
newMenu.Id = menu.Id;
newMenu.Name = menu.Name;
newMenu.ChildMenu = new List<Menu>();
FillMenu(menuList, newMenu.ChildMenu, newMenu.Id);
hList.Add(newMenu);
}
}