当前位置:编程学习 > C#/ASP.NET >>

[知识分享] LINQ TO SQL 实现无限递归查询

--------------------编程问答-------------------- 感谢分享。

之前我也回答过一个类似的,也贴出来:
http://topic.csdn.net/u/20120113/23/81633fdd-f23c-434a-aecd-0c669cf32c9d.html --------------------编程问答-------------------- 路过,支持一下! --------------------编程问答-------------------- --------------------编程问答-------------------- 牛逼      给分儿 --------------------编程问答-------------------- 支持一下子   --------------------编程问答-------------------- 支持一下下 --------------------编程问答-------------------- 我喜欢。。。 --------------------编程问答-------------------- 不错的分享,学习 --------------------编程问答-------------------- 支持一下! --------------------编程问答-------------------- 不错不错 --------------------编程问答-------------------- 支持一下子  --------------------编程问答-------------------- http://passport.csdn.net/account/resetpassword?user=tianyaono1&active=1BTXp9dReW4ZEM8MKyS83HHC17G3RpBPpSGY0LcotxI=0
--------------------编程问答-------------------- 见论坛内有网友提问类似的问题已经不止一次了,
现总结一下,希望能给以后再碰到此类问题的朋友一些帮助 --------------------编程问答-------------------- 非常不错,再次受教了,楼主要多多发些这样的帖子 --------------------编程问答-------------------- --------------------编程问答-------------------- 这个以前我都是直接用sql。
用linq试下去 --------------------编程问答-------------------- 功能很强大 --------------------编程问答-------------------- --------------------编程问答-------------------- 非常不错,非常不错, --------------------编程问答-------------------- 不错,很好,很强大,路过学习一下 --------------------编程问答-------------------- 不错,很好,很强大,路过学习一下 --------------------编程问答-------------------- 恩 学习下 

顺带问下 这样的无限递归是用传统的编程SQL快还是LINQ

对LINQ 用的少  请督察说说 --------------------编程问答--------------------

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

这段代码看不懂   --------------------编程问答-------------------- 非常不错,路过学习一下 --------------------编程问答-------------------- 支持,学习学习。 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答--------------------

very 固 --------------------编程问答-------------------- 标记,支持! --------------------编程问答-------------------- --------------------编程问答-------------------- 非常不错,再次受教了,多谢楼主 --------------------编程问答-------------------- 收藏。。。。 --------------------编程问答-------------------- --------------------编程问答-------------------- LINQ给力! --------------------编程问答-------------------- --------------------编程问答-------------------- 收藏. --------------------编程问答-------------------- 收藏. --------------------编程问答-------------------- 非常好,学习了 --------------------编程问答-------------------- 学习了 --------------------编程问答-------------------- 学习了 --------------------编程问答-------------------- 非常不错,再次受教了 --------------------编程问答-------------------- 学习~哈~ --------------------编程问答-------------------- 学习了。之前虽然也是用LINQ做递归,但是代码没这么简洁。 --------------------编程问答-------------------- 不错的 --------------------编程问答-------------------- 不错的 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 我记得还有一种只读取一次数据库的更高效的算法 --------------------编程问答--------------------
引用 48 楼  的回复:
我记得还有一种只读取一次数据库的更高效的算法

有的,就是将SQL语句封装成存储过程来实现 --------------------编程问答-------------------- 厉害,非常厉害,这样也行哇 --------------------编程问答-------------------- --------------------编程问答-------------------- 好东东,感谢楼主 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 好!还能接到分 --------------------编程问答-------------------- 受教了, --------------------编程问答-------------------- 关系,学习了 --------------------编程问答--------------------
引用 22 楼  的回复:
恩 学习下 

顺带问下 这样的无限递归是用传统的编程SQL快还是LINQ

对LINQ 用的少  请督察说说


只会让别人给结论,自己不会测吗?

判断一下这种“快、慢”差别到底值几毛钱? --------------------编程问答--------------------
引用 48 楼  的回复:
我记得还有一种只读取一次数据库的更高效的算法


其实有一种方法,就是将数据库按照二进制读取到内存中(你需要有几十G内存),然后按照数据库文件的磁盘块组织方式自己写文件解析程序,解析出所有数据,再去判断。 --------------------编程问答-------------------- 谢谢楼主分享 --------------------编程问答-------------------- 谢谢楼主分享,拿走了 --------------------编程问答-------------------- 感觉Linq是将谁都看的懂的sql写成鬼都看不懂 --------------------编程问答--------------------
引用 64 楼  的回复:
感觉Linq是将谁都看的懂的sql写成鬼都看不懂

 呵呵。。。能看的懂SQL的鬼也不多啊。。。 --------------------编程问答-------------------- 感谢楼主分享! --------------------编程问答-------------------- --------------------编程问答-------------------- thankyou!!!!!! --------------------编程问答-------------------- --------------------编程问答-------------------- 感谢分享,学习! --------------------编程问答-------------------- 谢谢楼主分享! --------------------编程问答-------------------- --------------------编程问答-------------------- up~!谢谢分享 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 支持一下子 --------------------编程问答-------------------- --------------------编程问答-------------------- 谢谢分享! --------------------编程问答-------------------- 好贴必须顶! --------------------编程问答-------------------- --------------------编程问答-------------------- 支持一下下 --------------------编程问答-------------------- 这个如何

/// <summary>
        /// 对于可以树型化的数据进行树型化
        /// </summary>
        /// <typeparam name="T">需要树型化的数据类名</typeparam>
        /// <param name="collection">顶级树形集合</param>
        /// <param name="action">项处理过程</param>
        /// <param name="func">次级栏目获取方法</param>
        /// <param name="depth">深度,默认从0开始</param>
        public void CTree(IQueryable<T> collection, Action<T, int> action, Func<T, IQueryable<T>> func, int depth = 1)
        {
            foreach (var t in collection)
            {
                action(t, depth);
                var list = func(t);
                CTree(list, action, func, depth + 1);
            }
        }
        #endregion
--------------------编程问答-------------------- 效率太差啊。

我写存储过程从10万多条数据中检索321条的一棵树(仅知道树根),只有2秒左右,在我笔记本上。用这种方式在LinqPad中要21秒。
用了EF,还要写存储过程,难过啊,有没有更好的办法呢? --------------------编程问答-------------------- 学习中!
有朋友能指点一下如何做清除panel1中TextBox吗?
TextBox是以动态的添加到panel1中的,TextBox命有
Memo01,Memo02,Memo03....
Money01,Money02,Money03...
最好是能详细的注明代码作用!非常感谢! --------------------编程问答-------------------- 学习中~谢谢分享! --------------------编程问答-------------------- --------------------编程问答--------------------
引用 64 楼  的回复:
感觉Linq是将谁都看的懂的sql写成鬼都看不懂

鬼看懂SQL,看不懂LINQ,人都变成鬼了.. --------------------编程问答-------------------- 支持楼主啦...... --------------------编程问答-------------------- 支持楼主啦......  --------------------编程问答--------------------
引用 84 楼 chjiamin 的回复:
效率太差啊。

我写存储过程从10万多条数据中检索321条的一棵树(仅知道树根),只有2秒左右,在我笔记本上。用这种方式在LinqPad中要21秒。
用了EF,还要写存储过程,难过啊,有没有更好的办法呢?

那就继续使用存储过程。。用了EF,也不能放弃了存储过程 --------------------编程问答-------------------- 看不太懂LINQ啊,看来要去学习下了。
补充:.NET技术 ,  LINQ
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,