Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用linq从c中列表中的sql返回层次结构_C#_Linq_List_Hierarchy - Fatal编程技术网

C# 使用linq从c中列表中的sql返回层次结构

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 =

我在sql中有一个表,它有三列ID、Name、ParentID,每列都有许多记录。现在我想要的是从ParrentId获得所有Hierarachy,将其包含在三视图中

这可以用一些好的LINQ解决方案来解决吗

我之前尝试的是使用一组列表,其中一个是子列表,但出现问题的原因是某些子列表下也可能有更多的子列表

我需要这个linq代码:

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

    }