1、整体数据量不大的场景

参照:EntityFramework Linq 查询数据获得树形结构-YES开发框架网 (yesdotnet.com)

核心方法GetChildData,特点将所有的数据查到内存中,利用递归去组装树状结构,优点就是只需查一次,但是把所有数据加到内存里,只适合数据量不大的场景

public List<TreeData> GetTreeData(string rowID)
{
var data = entities.data_ArchiveCategoryGroup
.Where(w => w.RowID != rowID)
.Select(s => new TreeData()
{
RowID = s.RowID,
ParentRowID = s.ParentRowID,
GroupName = s.GroupName,
Sort = s.Sort
}).ToList(); List<TreeData> result = new List<TreeData>();
foreach (var p in data.Where(w => w.ParentRowID == "").OrderBy(o => o.Sort))
{
result.Add(new TreeData()
{
RowID = p.RowID,
ParentRowID = p.ParentRowID,
GroupName = p.GroupName,
Sort = p.Sort,
Childs = GetChildData(data, p.RowID)
});
}
return result;
} public List<TreeData> GetChildData(List<TreeData> dataList, string id)
{
List<TreeData> nodeList = new List<TreeData>();
var children = dataList.Where(t => t.ParentRowID == id);
foreach (var o in children)
{
o.Childs = GetChildData(dataList, o.RowID);
nodeList.Add(o);
}
if (nodeList.Count == 0)
return null;
else
return nodeList;
} public class TreeData
{
public string RowID { get; set; } public string ParentRowID { get; set; } public string GroupName { get; set; }
public int Sort { get; set; }
public List<TreeData> Childs { get; set; }
}

2、树状结构的统一封装结果查询

参照:

Tree Structure in EF Core: How to configure a self-referencing table and use it / Habr

Tree Structure in EF Core: How to configure a self-referencing table and use it (itnan.ru)

ef 更新数据库表结构_EF Core中的树结构:如何配置和使用自引用表_cullen2012的博客-CSDN博客

EFCore——树形结构篇的更多相关文章

  1. abp(net core)+easyui+efcore实现仓储管理系统——EasyUI前端页面框架 (十八)

    目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+easyui+efcore实现仓储管理系统——解决方案介绍(二) ab ...

  2. abp(net core)+easyui+efcore实现仓储管理系统——ABP WebAPI与EasyUI结合增删改查之一(二十七)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

  3. 数据库中树形列表(以easyui的tree为例)

    构造一棵easyui前台框架的一个树形列表为例后台框架是spring MVC+JPA. 先看一下数据库是怎么建的,怎么存放的数据 下面是实体类 /** * 部门类 用户所属部门(这里的部门是一个相对抽 ...

  4. js文章列表的树形结构输出

    文章表设计成这样了 后端直接给了无任何处理的json数据,现在要前端实现树形结构的输出,其实后端处理更简单写,不过既然来了就码出来 var doclist = [{ "id": 1 ...

  5. ExtPB.Net:窗体应用技巧(2)在树形导航下打开弹出的win窗口

    ExtPB.Net的demo程序有个树形导航菜单,里面的菜单打开的窗口放在右边的TabStrip控件中.我们可以设计win通过导航打开,但有时我们希望以弹出窗口的形式打开它,但怎么办呢?现在可以这样修 ...

  6. java、easyui-combotree树形下拉选择框

    最近一直在研究这个树形的下拉选择框,感觉非常的有用,现在整理下来供大家使用: 首先数据库的表架构设计和三级菜单联动的表结构是一样,(父子关系) 1.下面我们用hibernate建一下对应的额实体类: ...

  7. GridView 树形结构分组的功能

    在“会飞的鱼”博客中看到GridView实现树形结构的代码,经过修改,添加了树形结构中的复选框功能,欢迎吐槽. 源地址:http://www.cnblogs.com/chhuic/archive/20 ...

  8. poj3417 LCA + 树形dp

    Network Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 4478   Accepted: 1292 Descripti ...

  9. jQuery 树形菜单

    树形菜单 在 jQuery easyu中其左侧的主菜单使用的是 easyui 中的 tree 组件,不是太熟悉,不过感觉不是太好用. 比如 easyui 中的 tree 需要单击分叉节点前的小三角,才 ...

  10. COGS 2532. [HZOI 2016]树之美 树形dp

    可以发现这道题的数据范围有些奇怪,为毛n辣么大,而k只有10 我们从树形dp的角度来考虑这个问题. 如果我们设f[x][k]表示与x距离为k的点的数量,那么我们可以O(1)回答一个询问 可是这样的话d ...

随机推荐

  1. 火了整个春节的DeepSeek,他对AI产品的意义到底是什么?

    相信春节期间各位的朋友圈一定被DeepSeek"轰炸"了,就算是普通人也获得了一些信息:国内AI取得了巨大突破. 但DeepSeek这次突破到底对一般的互联网从业者有什么帮助,绝大 ...

  2. [记录点滴]Spring Boot Admin源码分析笔记

    [记录点滴]Spring Boot Admin源码分析笔记 0x00 摘要 本文是过去使用Spring Boot Admin时候分析源码的笔记.虽然比较简单,但是也可以看出Spring Boot Ad ...

  3. Q:plsql中文显示??处理

    1.查询数据库字符集select userenv('language') from dual; 2.修改NLS_LANG环境变量:将NLS_LANG环境变量设置为正确的字符集 windows设置系统环 ...

  4. 普通人也能轻松掌握的20个DeepSeek高频提示词(2025版)

    一.基础原则 1️⃣ 说人话最重要 "不用专业术语,就像和朋友聊天一样描述需求". ️ 错误示范:"请用SWOT分析法输出新能源汽车行业报告". 正确示范:&q ...

  5. AI工具推荐:领先的开源 AI 代码助手——Continue

    前言 之前介绍了VS Code中的AI插件Cline与Roo Code,这两个都是根据给定一个任务,开始自动写代码的.除了这两个AI代码工具之外,在平常我还很喜欢的就是Continue . Conti ...

  6. 百万架构师第三十九课:RabbitMq:Linux安装RabbitMq|JavaGuide

    来源:https://javaguide.net RPM包安装RabbitMQ RabbitMQ的安装非常简单,由于RabbitMQ依赖于Erlang,所以需要先安装Erlang,解决依赖关系后,就可 ...

  7. 深入集成:使用 DeepSeek SDK for .NET 实现自然语言处理功能

    快速上手:DeepSeek SDK for .NET 全面指南 简介 Ater.DeepSeek.AspNetCore 是专门为 .NET 开发者提供的 DeepSeek API SDK.它旨在简化与 ...

  8. WPF Expander style

    <!--ExpanderStyle--> <Style x:Key="ExpanderStyleOne" TargetType="{x:Type Exp ...

  9. 工业机器人维修保养|ABB机器人IRB 6700维修保养技巧

    通过机器人维修保养服务定制合理的维修保养工作,可以确保ABB机器人IRB 6700的持续稳定运行,延长其使用寿命,为企业的生产提供有力保障. 一.ABB机器人IRB 6700日常检查与维护 外观检查: ...

  10. linux命令行连接wifi

    linux命令行连接wifi 1.安装nmcli sudo apt-get install nmcli 2.查看网络设备 sudo nmcli dev 3.开启wifi sudo nmcli r wi ...