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. IDEA 打开多个文件显示在多行Tab上

    1.左上角选择Preferences 2.搜索Editor Tabs,右侧取消勾选Show tabs in one row

  2. java推送企业微信消息

    <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpcl ...

  3. Git错误合集 | git工作上遇到的那些报错

    前言 我总是在git提交的时候,遇到一些奇奇怪怪的问题.有时候居然还会碰上第二次. 记住这些"绊脚石",下回不摔跤. 目录 git index损坏 一.git index损坏 报错 ...

  4. go语言实现终端里的倒计时

    最近在更新系统的时候发现pacman的命令行界面变了,我有很久没更新过设备上的Linux系统了,所以啥时候变的不好说.但这一变化成功勾起了我的好奇心.新版的更新进度界面如下: 新的更新进度界面能同时显 ...

  5. ITSS 运维-服务台相关内容

  6. 【主流技术】Spring Boot Starter 的应用场景与自动配置

    目录 前言 一.Spring Boo Starter 简介 二.如何自定义 Starter 2.1命名规范 2.2整体结构 2.3模块开发 2.3.1依赖引入 2.3.2xxxAutoConfigur ...

  7. Ubuntu下如何管理多个ssh密钥

    Ubuntu下如何管理多个ssh密钥 前言 ‍ 我一直在逃避这个问题,误以为我能够单纯地用一个 ssh 走天下. 好吧,现实是我不得不管理多个 ssh 做,那就写个博客总结一下吧. 查阅后发现前人已经 ...

  8. Vite项目入口文件

    官方文档:https://cn.vitejs.dev/guide/#index-html-and-project-root

  9. git clone加速

    使用github的镜像网站进行访问,github.com.cnpmjs.org,我们将原本的网站中的github.com 进行替换.

  10. oracle中的aix,Oracle在AIX上一些处理

    一.Oracle在aix上连接 1.su - oracle  //进入oracle用户: 2.export ORACLE_SID=house  //指定实例,多个实例的情况下: 3.sqlplus / ...