博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LINQ TO SQL 实现无限递归查询
阅读量:6714 次
发布时间:2019-06-25

本文共 1788 字,大约阅读时间需要 5 分钟。

LINQ TO SQL 实现无限递归查询

现总结一下,希望能给以后再碰到此类问题的朋友一些帮助

 

--构造测试数据: 只作演示用CREATE TABLE [dbo].[Tim_LinqTable]([Id] int PRIMARY KEY IDENTITY(1,1) NOT NULL,[Name] [varchar](50) NOT NULL,[Parent] int NOT NULL,)GO INSERT INTO [Tim_LinqTable]  SELECT 'A',0 UNION ALLSELECT 'A1',1 UNION ALLSELECT 'A2',1 UNION ALLSELECT 'B1',2 UNION ALLSELECT 'B2',3 UNION ALLSELECT 'C1',4 UNION ALLSELECT 'C2',4 UNION ALLSELECT 'D1',5 UNION ALLSELECT 'D2',5 UNION ALLSELECT 'D3',5 GO WITH tempAS(SELECT * FROM [Tim_LinqTable]  WHERE Parent = 3UNION ALLSELECT m.* FROM [Tim_LinqTable]  AS mINNER JOIN temp AS child ON m.Parent = child.Id)SELECT * FROM tempGO --查询 Parent=3 的所有子数据结果如下:Id          Name                                               Parent----------- -------------------------------------------------- -----------5           B2                                                 38           D1                                                 59           D2                                                 510          D3                                                 5 (4 row(s) affected)

 

//好,下边来看看用C#怎么实现上边的SQL语句吧:void Main(){     var query=GetClassID(3);     Console.WriteLine("Id\tName\tParent");     query.ToList().ForEach(q=>Console.WriteLine("{0}\t{1}\t{2}",q.Id,q.Name,q.Parent));     /*        Id       Name       Parent        5        B2         3        8        D1         5        9        D2         5       10        D3         5     */}public IEnumerable
GetClassID(int p_id){ var query = from c in this.Tim_LinqTables where c.Parent == p_id select c; return query.ToList().Concat(query.ToList().SelectMany(t => GetClassID(t.Id))); }

 

转载于:https://www.cnblogs.com/yangzhx/p/3794690.html

你可能感兴趣的文章
管理信息系统测试方法总结(二)
查看>>
(一) virtualenv虚拟环境安装
查看>>
Android官方开发文档Training系列课程中文版:分享简单数据之从其它APP接收简单数据...
查看>>
OpenSSL将于9月22日发布多个漏洞补丁
查看>>
大数据助推新型智库建设
查看>>
新加坡欲重组通信和媒体管制机构
查看>>
《CCNP ROUTE 300-101学习指南》——2.2节构建EIGRP拓扑表
查看>>
《为自己工作——世界顶级设计师成功法则》目录—导读
查看>>
Libreboot 项目向开源社区示好和致歉
查看>>
《CMYK 2.0——设计师色彩管理手册》—第1章1.3节副作用
查看>>
java.util.concurrent.locks.LockSupport
查看>>
红帽加入 Node.js 基金会白金会员
查看>>
《OpenGL编程指南》一2.7 独立的着色器对象
查看>>
Ionic 3.4.2 发布,漂亮的 HTML5 移动应用框架
查看>>
Linux Kernel 4.9-rc8,4.9 分支最后一个候选版
查看>>
想开发 Android 分支?没门!
查看>>
《Web异步与实时交互——iframe AJAX WebSocket开发实战》—— 2.2 相关关键技术及工作原理...
查看>>
《Nmap渗透测试指南》—第1章1.5节Mac OS安
查看>>
重磅,企业实施大数据的路径
查看>>
linux之cp/scp命令+scp命令详解
查看>>