递归和foreach循环调用,如何调用??

xiaolingwei 2011-01-13 10:30:49
我的代码 :
public static string getParentname(int classid)
{
string parentname = "";
DataTable dt1 = WebSys.NewsType("*", " where id=" + classid);
if (dt1.Rows.Count > 0)
{
foreach (DataRow item in dt1.Rows)
{
if (Convert.ToInt32(item["parent"]) == 0)
{
parentname += item["enname"].ToString()+"//";
}
else
{
parentname += getParentname(Convert.ToInt32( item["id"]))+ item["enname"].ToString()+"//";
}
}
}

return parentname;
}
...全文
177 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
deoing 2011-01-13
  • 打赏
  • 举报
回复

public static string getParentname(int classid)
{
string parentname = "";
DataTable dt1 = WebSys.NewsType("*", " where id=" + classid);
if (dt1.Rows.Count > 0)
{
foreach (DataRow item in dt1.Rows)
{
if (Convert.ToInt32(item["parent"]) == 0)
{
parentname += item["enname"].ToString()+"//";
}
else
{
parentname += getParentname(Convert.ToInt32( item["parent"]))+ item["enname"].ToString()+"//";//item["id"]改为item["parent"]
}
}
}

return parentname;
}
xiaolingwei 2011-01-13
  • 打赏
  • 举报
回复
[Quote=引用楼主 xiaolingwei 的回复:]
我的代码 :
public static string getParentname(int classid)
{
string parentname = "";
DataTable dt1 = WebSys.NewsType("*", " where id=" + classid);
if (dt1.Rows.Count > 0)
{
foreach (D……
[/Quote]

能不能麻烦 你把我的代码 看下 然后告诉我哪里出问题了,我挺郁闷的,感觉没甚么问题 也不知道怎么了,就是搞成死循环了
xiaolingwei 2011-01-13
  • 打赏
  • 举报
回复
就是搞成死循环了 我挺郁闷的,感觉逻辑没什么问题啊
zhang_13245768 2011-01-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuyq11 的回复:]

private void InitTree(TreeNodeCollection Nds,string parentId)
{
DataView dv=new DataView();
TreeNode tmpNd;
string intId;
dv.Table=ds.Tables["tree"];
dv.RowFilter="ParentId='" + parentId + "'……
[/Quote]
+1
whowhen21 2011-01-13
  • 打赏
  • 举报
回复
千万别搞成死循环了~!这是需要注意的
*************************************************
本内容使用CSDN小秘书回复
每天回帖即可得10分可用分!
*************************************************
wuyq11 2011-01-13
  • 打赏
  • 举报
回复

private void InitTree(TreeNodeCollection Nds,string parentId)
{
DataView dv=new DataView();
TreeNode tmpNd;
string intId;
dv.Table=ds.Tables["tree"];
dv.RowFilter="ParentId='" + parentId + "'" ;
foreach(DataRowView drv in dv)
{
tmpNd=new TreeNode();
tmpNd.Tag=drv["NodeId"].ToString();
tmpNd.Text=drv["NodeName"].ToString();
Nds.Add(tmpNd);
intId=drv["ParentId"].ToString();
InitTree(tmpNd.Nodes,tmpNd.Tag.ToString());
}
}
zzz9413 2011-01-13
  • 打赏
  • 举报
回复
递归死循环,一般是无法到达结束条件
if (Convert.ToInt32(item["parent"]) == 0)
{
parentname += item["enname"].ToString() + "//";
}
这个达不到,则parent字段始终不等于0,逻辑没发现问题
检查你的数据吧
xiaolingwei 2011-01-13
  • 打赏
  • 举报
回复
等下我试试哈。。。
xiaolingwei 2011-01-13
  • 打赏
  • 举报
回复
什么意思,和我的代码一模一样啊。。
第1章 PHP 5基础 1.1 简介 1.1.1 PHP是什么 1.1.2 初步认识PHP代码 1.2 PHP的安装 1.2.1 Linux下安装.Apache和PHP 1.2.2 Windows下安装Apache和PHP 1.3 PHP配置 1.3.1 PHP配置文件 1.3.2 PHP常用配置选项 1.3.3 加载扩展库 1.4 本章小结 第2章 网站开发语法基础 2.1 基本语法 2.2 数据类型 2.2.1 布尔型 2.2.2 整型 2.2.3 浮点型 2.2.4 字符串 2.2.5 数组 2.2.6 对象 2.2.7 资源 2.2.8 NULL 2.2.9 类型转换 2.3 变量 2.3.1 变量的赋值 2.3.2 预定义变量 2.3.3 变量作用域 2.3.4 可变变量 2.4 常量 2.4.1 自定义常量 2.4.2 魔术常量 2.5 表达式 2.6 运算符 2.6.1 算术运算符 2.6.2 字符串运算符 2.6.3 比较运算符 2.6.4 逻辑运算符 2.6.5 位运算符 2.6.6 赋值运算符 2.6.7 数组运算符 2.6.8 类型运算符 2.6.9 错误控制运算符 2.6.10 执行运算符 2.6.11 运算符的优先级 2.7 流程控制 2.7.1 if结构 2.7.2 switch结构 2.7.3 while循环 2.7.4 for循环 2.7.5 foreach语句 2.7.6 declare语句 2.7.7 exit和retunl语句 2.8 包含代码 2.9 本章小结 第3章 函数 3.1 用户自定义函数 3.1.1 函数调用与函数定义 3.1.2 递归函数 3.2 函数的参数 3.2.1 按值传递参数 3.2.2 通过引用传递 3.2.3 默认参数值 3.2.4 可变长度参数列表 3.3 函数返回值 第4章 类与对象 第5章 字符串 第6章 数组 第7章 PHP高级应用技术 第8章 PHP模板 第9章 MySQL快速入门 第10章 MySQL数据库管理 第11章 MySQL5进阶 第12章 文章发布系统 第13章 电子商务系统

62,051

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧