EFCore——树形结构篇
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——树形结构篇的更多相关文章
- abp(net core)+easyui+efcore实现仓储管理系统——EasyUI前端页面框架 (十八)
目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+easyui+efcore实现仓储管理系统——解决方案介绍(二) ab ...
- abp(net core)+easyui+efcore实现仓储管理系统——ABP WebAPI与EasyUI结合增删改查之一(二十七)
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...
- 数据库中树形列表(以easyui的tree为例)
构造一棵easyui前台框架的一个树形列表为例后台框架是spring MVC+JPA. 先看一下数据库是怎么建的,怎么存放的数据 下面是实体类 /** * 部门类 用户所属部门(这里的部门是一个相对抽 ...
- js文章列表的树形结构输出
文章表设计成这样了 后端直接给了无任何处理的json数据,现在要前端实现树形结构的输出,其实后端处理更简单写,不过既然来了就码出来 var doclist = [{ "id": 1 ...
- ExtPB.Net:窗体应用技巧(2)在树形导航下打开弹出的win窗口
ExtPB.Net的demo程序有个树形导航菜单,里面的菜单打开的窗口放在右边的TabStrip控件中.我们可以设计win通过导航打开,但有时我们希望以弹出窗口的形式打开它,但怎么办呢?现在可以这样修 ...
- java、easyui-combotree树形下拉选择框
最近一直在研究这个树形的下拉选择框,感觉非常的有用,现在整理下来供大家使用: 首先数据库的表架构设计和三级菜单联动的表结构是一样,(父子关系) 1.下面我们用hibernate建一下对应的额实体类: ...
- GridView 树形结构分组的功能
在“会飞的鱼”博客中看到GridView实现树形结构的代码,经过修改,添加了树形结构中的复选框功能,欢迎吐槽. 源地址:http://www.cnblogs.com/chhuic/archive/20 ...
- poj3417 LCA + 树形dp
Network Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 4478 Accepted: 1292 Descripti ...
- jQuery 树形菜单
树形菜单 在 jQuery easyu中其左侧的主菜单使用的是 easyui 中的 tree 组件,不是太熟悉,不过感觉不是太好用. 比如 easyui 中的 tree 需要单击分叉节点前的小三角,才 ...
- COGS 2532. [HZOI 2016]树之美 树形dp
可以发现这道题的数据范围有些奇怪,为毛n辣么大,而k只有10 我们从树形dp的角度来考虑这个问题. 如果我们设f[x][k]表示与x距离为k的点的数量,那么我们可以O(1)回答一个询问 可是这样的话d ...
随机推荐
- git pull报错:Pulling without specifying how to reconcile divergent branches is discouraged.
一.保存内容如下 二.翻译 三.设置为默认即可:git config pull.rebase false
- NFS使用TrueNAS SCALE的好处
之前一直习惯于使用linux自带的NFS服务,但由于NFS空间占用较大自身不带压缩能力,最近使用了号称比较流行的 TrueNAS SCALE 版本,重要的是它还可以提供块服务 Block (iSCSI ...
- tomcat启动时启动窗口出现乱码的解决方案
工具/原料 一台安装了tomcat的电脑 方法/步骤 先来看看问题(图示),在tomcat的启动窗口打印的启动信息中包含了大量的中文乱码,虽然这些对tomcat本身的使用没有任何影响,但却 ...
- [第二章]ABAQUS CM插件中文手册
ABAQUS Composite Modeler User Manual(zh-CN) Dassault Systèmes, 2018 注: 源文档的交叉引用链接,本文无效 有些语句英文表达更易理解, ...
- ITIL4 变更管理核心流程笔记
- 大模型评测之幻觉检测hallucination_evaluation_model
大背景: 2025开年deepseek铺天盖地的新闻 参会代表已经表明,年度主线就是以AI为基础 Manus于3月初横空出世 国内各种模型竞赛的现状,只要是和科技沾边的公司不可能没有大模型,哪怕是里三 ...
- 编写你的第一个 Django 应用程序,第5部分
本教程从教程 4 停止的地方开始.我们已经构建了一个网络投票应用程序,现在我们将为其创建一些自动化测试. 一.自动化测试简介 1.什么是自动化测试? 测试是检查代码操作的例程. 测试在不同级别运行.一 ...
- 浅谈 C# 13 中的 params 集合
前言 在 C# 13 中,params 的改进使其从可变数量的数组参数升级为可变数量的集合类型参数.这一改进通过支持高性能集合类型(如Span<T>,ReadOnlySpan<T&g ...
- Audio DSP 链接脚本文件解析
上篇文章(智能手表音乐播放功耗的优化)讲了怎么优化音乐场景下的功耗,其中第二点是优化memory的布局.那么在哪里优化memory的布局呢?就是在本文要讲的链接脚本(ld)文件里.作为audio DS ...
- .net 跨域 config中配置
<system.webServer> <validation validateIntegratedModeConfiguration="false" /> ...