挑战递归,求败贴。
数据表生成无级树,刚发布,地址:http://blog.csdn.net/xianfajushi/article/details/7756584
优点:任意定义树节顺序与级数,无无限循环之忧,速度比递归快。求败要求:发现树节错误,发现无法读取语法错误。
注明:目前不支持日期型数据和金额类数据进行筛选,需要的话自己写,或以后有遇到需求再补充。
欢迎测试指正,不吝赐教,不拒砸蛋丢菜。
[解决办法]
接分。。。
楼主你是学术派的啊,全中文编程啊?
[解决办法]
我上来就看到了:
玄龙戏珠无级树、父龙、母龙、子龙、龙珠...
[解决办法]
怎么这样的习惯啊,真的不要用中文啊,我习惯了英文命名,看着中文特别的....
[解决办法]
中文博大精深不适合简显的编程啊,编程还是用用简单的英文就好了- -
呵呵
jf
[解决办法]
很多编程语言是不支持中文的,C#是个例外。
[解决办法]
LZ悲剧了、
人家只是想讨论下技术、
没想到你们全抓"伪"bug去了、
[解决办法]
不排斥法,存在即合理的,而且可性也很高,不是一成不的。
[解决办法]
中文咋了?总比那词不达意的蹩脚的伪英文名字好多了
[解决办法]
没必要纠结命名。。
[解决办法]
[解决办法]
谈点实际的。
[解决办法]
代码看不下去,实在有点难接受中文变量名,但是lz你用也没啥不好的。
不过用中文表字段名的时候建议加"[]",因为有时候有些数据库中间件或本身对中文支持没那么好。
之前拿到gis数据后我这边一个gis控件不支持中文表明结果很麻烦的修改了字段名。
可能的话生僻数据库还是沿用英文字段名。注意加上[]分隔符吧。
[解决办法]
我还真认真的看了,LZ这是个坑啊,中文不适感就不说了,表结构没给,上来就一个datatable开始循环,又冒出个级的概念来,不知道,级在什么地方出来的,是表的级联查询出的级么,也不解释,“子龙”“母龙”什么蛋疼啊。上来就
节点.Text = 数据列[0].ToString();
if (!DateTime.TryParse(节点.Text, out 日期)) 子节数据 = 树表.Select(重组表列[0] + "='" + 节点.Text + "'");
数据列【0】是毛数据没说,为什么要判断 节点.Text 是否能成功转日期也不提,子节数据是所谓的树表select出来的,树表是数据表中的内容的defalutview.totable来的,表列是根据表名做的判断,所以其中的数据列【0】是所谓的“归属”“提示内容”“总类”,根据这个来的,我权且当它是个父节点id的意思吧。到了下面我就完败了,完全不知所谓。
=======================
说说我常用的非递归树生成,我通常是用oracle中的级联查询树表,来出一个树,来一个堆栈记录下当前父节点的全路径,循环一次完事。.net代码不超过三十行,缺点是兄弟节点的排序问题我没解决。我对级联查询研究的还不够啊.....有知道的告知一下
[解决办法]
仁者见仁智者见智吧。
[解决办法]
额,不多说啥,先上一段代码,lz比较一下差距有多大
- C# code
public static void makeTreeView<TSource, TID, TNode>( this IEnumerable<TSource> list, IEnumerable tds, Func<TSource, TID> FunID, Func<TSource, TID> funParentID, Func<TSource, TNode> funConvert, Func<TNode, IEnumerable> ChirldFun, decimal parentId = 0 ) where TID : struct { var tlist = list.Where(c => Convert.ToDecimal(funParentID(c)) == parentId); foreach (var item in tlist) { TNode td = funConvert(item); dynamic d_tds = tds; d_tds.Add(td); list.makeTreeView(ChirldFun(td), FunID, funParentID, funConvert, ChirldFun,Convert.ToDecimal(FunID(item))); } }
[解决办法]
[解决办法]
如果要挑战递归,就应该从算法本质上去挑战,
而不是在这种即定的环境下去挑战。
[解决办法]
lZ 还在读书把。
[解决办法]
编程要是从中国起源的就没这么多争论了...
[解决办法]
中文没什么不好。。 只是乍一看都以为伪代码,不太习惯。看久到习惯。
ps 实际情况下应用,大部分人都会尽量用动态规划算法来避免递归的运用。
[解决办法]
大家都跑题了...
[解决办法]
[解决办法]
我们看的是程序,用什么命名不重要,只要简单明了易读就可以,那些个又臭又长的蹩脚的英文命名看着也很蛋疼 - -!~
[解决办法]
大神们上班好轻松啊,整天闲的吵吵吵!
[解决办法]
玄龙戏珠无级树(五莲花姊妹兄弟完美自定义含图标)
名字取得刁!
中文命名,英文命名 都一样,没有左,也没有右,中不?
关键是要标准化,也标准化得起来。乱也乱的出水平。
标准化习惯固然是好,但是么没必要把习惯作为标准。
我倒是很支持楼主这把精神。