递归和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;
}
...全文
191 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
  • 打赏
  • 举报
回复
什么意思,和我的代码一模一样啊。。

62,256

社区成员

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

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

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

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