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

本文关键字:sql 返回 层次结构 列表 linq 使用 | 更新日期: 2023-09-27 18:33:35

我在sql中有表,它有三列(ID,Name,ParentID),每列都有很多记录。现在我想要的是从ParrentId获取所有hiearachy,将其包含在三个视图中。

这可以通过一些不错的 LINQ 解决方案来解决吗?

我之前尝试的是使用一组List-s,其中一个是孩子,但是出现问题导致一些子列表也可以有更多的孩子。

我需要这个与 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 个子 var-s。

感谢任何帮助和建议!

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

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