[知识分享] LINQ TO SQL 实现无限递归查询
2012-07-02 13:59
465 查看
见论坛内有网友提问类似的问题已经不止一次了,
现总结一下,希望能给以后再碰到此类问题的朋友一些帮助
更多LINQ知识分享,请参考:
http://blog.csdn.net/q107770540
现总结一下,希望能给以后再碰到此类问题的朋友一些帮助
--构造测试数据: 只作演示用 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 ALL SELECT 'A1',1 UNION ALL SELECT 'A2',1 UNION ALL SELECT 'B1',2 UNION ALL SELECT 'B2',3 UNION ALL SELECT 'C1',4 UNION ALL SELECT 'C2',4 UNION ALL SELECT 'D1',5 UNION ALL SELECT 'D2',5 UNION ALL SELECT 'D3',5 GO WITH temp AS ( SELECT * FROM [Tim_LinqTable] WHERE Parent = 3 UNION ALL SELECT m.* FROM [Tim_LinqTable] AS m INNER JOIN temp AS child ON m.Parent = child.Id ) SELECT * FROM temp GO --查询 Parent=3 的所有子数据结果如下: Id Name Parent ----------- -------------------------------------------------- ----------- 5 B2 3 8 D1 5 9 D2 5 10 D3 5 (4 row(s) affected)
//好,下边来看看用C#怎么实现上边的SQL语句吧: void Main() { var query=GetSonID(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<Tim_LinqTable> GetSonID(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 => GetSonID(t.Id))); }
更多LINQ知识分享,请参考:
http://blog.csdn.net/q107770540
相关文章推荐
- LINQ TO SQL 实现无限递归查询
- LINQ TO SQL 实现无限递归查询
- LINQ TO SQL 实现无限递归查询
- LINQ TO SQL 实现无限递归查询
- linq to sql实现无限递归查询
- 【C#】对异步请求处理程序IHttpAsyncHandler的理解和分享一个易用性封装 【手记】走近科学之为什么明明实现了IEnumerable<T>的类型却不能调用LINQ扩展方法 【手记】手机网页弹出层后屏蔽底层的滑动响应 【手记】ASP.NET提示“未能创建类型”处理 【Web】一个非常简单的移动web消息框 【手记】解决EXCEL跑SQL遇“查询无法运行或数据库表无法打开...”
- linq to sql在新增和修改时的验证实现
- LINQ to Entities 实现sql 关键字"In"方式总结
- 一步一步学Linq to sql(一):预备知识
- 一步一步学Linq to sql(一):预备知识
- Linq to sql 实现 group by 统计多字段 返回多字段
- Linq To Sql 中使用lambda表达式实现Left Join
- LINQ TO SQL的ORM模型构架,实现DATA层的方法!
- MVC+LINQToSQL的Repository模式之(三)Repository模式实现统一CURD操作,实现EF中的Find主键查找
- linq to sql 第一步 预备知识
- LINQ to Entities 实现sql 关键字"In"方式总结
- 一步一步学Linq to sql(一):预备知识
- 简单的linq to sql 的例子 ,实现了增删改查
- linq to sql case when 语句的实现
- ASP.NET使用Linq to SQL实现基本的增、删、改、查及绑定控件