ALTER VIEW [dbo].[view_TreeLevel]
AS
WITH cte
AS (
SELECT a.ModuleID ,
a.Module_Name ,
a.Module_Description ,
a.Module_FatherID ,
a.Module_Url ,
a.Module_Order, 1 Level FROM TT_TreeView a WHERE a.Module_FatherID=0
UNION ALL
SELECT b.ModuleID ,
b.Module_Name ,
b.Module_Description ,
b.Module_FatherID ,
b.Module_Url ,
b.Module_Order, Level+1 FROM TT_TreeView b INNER JOIN cte c ON b.Module_FatherID = c.ModuleID
)
SELECT TOP 100 PERCENT * FROM cte ORDER BY Level

CREATE TABLE [dbo].[AreaTable](
[Id] int PRIMARY KEY IDENTITY(1,1) NOT NULL,
[Name] [varchar](50) NOT NULL,
[Parent] int NOT NULL,
)
GO INSERT INTO [AreaTable]
SELECT '中国',0 UNION ALL
SELECT '广东',1 UNION ALL
SELECT '湖南',1 UNION ALL
SELECT '深圳',2 UNION ALL
SELECT '长沙',3 UNION ALL
SELECT '福田',4 UNION ALL
SELECT '南山',4 UNION ALL
SELECT '天心',5 UNION ALL
SELECT '岳麓',5 UNION ALL
SELECT '芙蓉',5 UNION ALL
SELECT '蛇口',7 UNION ALL
SELECT '科技园',7
GO --查询全国
WITH temp
AS
(
SELECT *,1 Level FROM [AreaTable] WHERE Parent = 1 --1全国 2广东
UNION ALL
SELECT m.*,Level+1 FROM [AreaTable] AS m
INNER JOIN temp AS child ON m.Parent = child.Id
)
SELECT * FROM temp ORDER BY temp.Level

void Main()
{
var query = GetChildren(2); //Linq递归查询方法
Console.WriteLine("Id\tName\tParent");
query.ToList().ForEach(q => Console.WriteLine("{0}\t{1}\t{2}", q.Id, q.Name, q.Parent));
} private IEnumerable<AreaTable> GetChildren(int p_id)
{
var query = RBAC.Dal.DataRootBase.Context.From<AreaTable>().Where(p => p.Parent == p_id);
return query.ToList().Concat(query.ToList().SelectMany(t => GetChildren(t.Id)));
}

SqlServer与Linq 无限递归目录树且输出层级的更多相关文章

  1. 104)PHP,目录树状输出

    使用特定数量的缩进达到树状目的! 核心问题,计算需要缩进的数量! 缩进级别,与递归调用深度保持一致.每当执行一级递归操作,所找到的文件的缩进级别+; 语法实现: 增加一个参数,表示当前函数调用的深度级 ...

  2. 关于无限分类的树状输出(id,name,pid)类型的

    首先创建无限分类的数据表,我这里采用的是id.name.pid这种类型(当然还有很多种无限分类的方式了,比如:id.name.pid.path.left.right左右节点的形式) CREATE TA ...

  3. 转:打造DropDownList,TreeView,ListBox无限极分类目录树

    [csharp] view plaincopyprint? #region DropDownList无限递归显示层次关系 /// <summary> /// 创建无限分级下拉列表框 /// ...

  4. 【整理】iview Tree数据格式问题,无限递归树处理数据

    iview Tree数据格式问题,无限递归树处理数据 https://juejin.im/post/5b51a8a4e51d455d6825be20

  5. oracle的递归运算(树运算) 无限树形

    oracle的递归运算(树运算)start with org_id ='1'connect by prior parent_id=son_id 1.前言   oracle的递归运算,在我们web页面的 ...

  6. 【手撸一个ORM】第五步、Expression(表达式目录树)转换为Where子句

    说明 在SQL中,查询.修改比较常用到WHERE子句,在这里根据使用场景不同,定义了两个类,一个用于查询,一个用于修改(插入)操作.原因是: 查询操作支持一级导航属性查询,如student.Schoo ...

  7. C#无限极分类树-创建-排序-读取 用Asp.Net Core+EF实现之方法二:加入缓存机制

    在上一篇文章中我用递归方法实现了管理菜单,在上一节我也提到要考虑用缓存,也算是学习一下.Net Core的缓存机制. 关于.Net Core的缓存,官方有三种实现: 1.In Memory Cachi ...

  8. C#无限极分类树-创建-排序-读取 用Asp.Net Core+EF实现

    今天做一个管理后台菜单,想着要用无限极分类,记得园子里还是什么地方见过这种写法,可今天找了半天也没找到,没办法静下心来自己写了: 首先创建节点类(我给它取名:AdminUserTree): /// & ...

  9. [转] 在 Linux 中怎样使用cp命令合并目录树

    PS:通过cp -r --link a/* b/* merged 硬链接不需要复制 怎样将两个布局相似的目录树合并成一个新的目录树?为理解该问题让我们思考下面的例子. 假设 dir1 和 dir2 目 ...

随机推荐

  1. Spring详解(五)------AspectJ 实现AOP

    上一篇博客我们引出了 AOP 的概念,以及 AOP 的具体实现方式.但是为什么要这样实现?以及提出的切入点表达式到底该怎么理解? 这篇博客我们通过对 AspectJ 框架的介绍来详细了解. 1.什么是 ...

  2. [js高手之路]gulp教程-从入门到项目中快速上手使用

    在这之前,我已经分享过一个webpack的全系列,相对于webpack, gulp使用和配置起来非常的简单. gulp是什么? gulp 是基于 node 实现 Web 前端自动化开发的工具,利用它能 ...

  3. python 斐波那契数列 fibonacci

    在python中生成fibonacci数列的函数 def fibonacci(): list = [] while 1: if(len(list) < 2): list.append(1) el ...

  4. 英语app分析

    Andorid 版本 第一部分 调研, 评测 搜索了一下必应跑出来的是微软必应,在印象中微软的产品都是很可靠地.安装之后对它的 排版字体图片等不是很喜欢,感觉有道词典会更亲切一点. 必应       ...

  5. 201521123063 《Java程序设计》 第7周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 2. 书面作业 ArrayList代码分析 1.1 解释ArrayList的contains源代码 public boole ...

  6. 201521123019 《Java程序设计》第7周学习总结

    1. 本章学习总结 2. 书面作业 Q1.ArrayList代码分析 1.1解释ArrayList的contains源代码 源代码如下: public boolean contains(Object ...

  7. 201521123022 《Java程序设计》 第五周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 2. 书面作业 1.代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.java文件能否编译通过? ...

  8. 201521123075 《Java程序设计》第4周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. - 了解了多态就是以单一的接口操作多种类型的对象,但是对多态和继承的关系还是有点混乱. - ...

  9. 201521123027<java程序设计>第14周作业总结

    1.本周作业总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 2.书面作业 Q1. MySQL数据库基本操作 建立数据库,将自己的姓名.学号作为一条记录插入.(截图,需出现自己 ...

  10. 201521123092, 《java程序设计》第1周学习总结。

    #1.本周学习总结 这一周是我学习java的第一周,刚接触一门全新的编程语言,觉得还是有点困难的,很多基础性的java知识需要一点点学习,我会请教同学以及查询网上的学习资料,认真学好这一门学科. 本周 ...