前言
树形结构是一种很常见的数据结构,类似于现实生活中的树的结构,具有根节点、父子关系和层级结构。
所谓根节点,就是整个树的起始节点。
节点则是树中的元素,每个节点可以有零个或多个子节点,节点按照层级排列,根节点属于第一层,其子节点属于第二层,以此类推,没有子节点的节点,则称为叶子,是最后一层。
父子关系就是节点之间的关系,每个节点都有父节点。
树形结构的应用非常广泛,例如在数据库中用来表示组织结构、目录结构,还用于实现树状菜单、文件系统等。
树形结构的灵活性和层次性使其成为处理具有层级关系数据的有力工具。
常见的树形结构包括二叉树、平衡树、B树等,它们在各个领域都有不同的应用场景和算法实现。
下面分享 EF6 查询并返回树形结构数据的 2 个思路和具体实现方法。
1. EF 生成数据表的实体类
/// <summary>
/// HTFP14 表实体类
/// </summary>
public partial class HTFP14
{
public string COMPHT14 { get; set; }
public string ACDEHT14 { get; set; }
public string PGRPHT14 { get; set; }
public string PKEYHT14 { get; set; }
public string DESCHT14 { get; set; }
public Nullable<decimal> PVALHT14 { get; set; }
public string PSTRHT14 { get; set; }
public string GLNOHT14 { get; set; }
public string PCDEHT14 { get; set; }
public string ATLVHT14 { get; set; }
public string USERHT14 { get; set; }
public System.DateTime LMDTMHT14 { get; set; }
}
2. 创建用于前端的 ViewModel 类
/// <summary>
/// 主菜单 UI 树形结构 ViewModel 类
/// </summary>
public class MainMenuViewModel
{
[Description("菜单层次")]
public int MenuLevel { get; set; }
[Description("菜单码")]
public string MenuCode { get; set; }
[Description("菜单名称")]
public string MenuName { get; set; }
[Description("菜单对外显示名称")]
public string MenuLabel
{
get
{
return $"{MenuCode} - {Men