asp.net(C#)如何得出一个栏目的下级及下级的下级所有栏目?

[复制链接]
查看11 | 回复2 | 2009-7-26 15:08:15 | 显示全部楼层 |阅读模式
首先,在 C# 请不要用 “+” 拼接字符串,这样内存会产生很多垃圾。应采用 StringBuilder sb, sb.Append("str") 方式。 protected static string getChildSort(int parentID,StringBuilder strID)
{
DataTable dt = DBFun.GetClassList().Tables[0];
DataRow[] drs = dt.Select("ParentID= " + parentID);
foreach (DataRow dr in drs)
{
string classid = dr["id"].ToString();
strID.Append(classid);
strID.Append(",");
getChildSort(Convert.ToInt32(classid), strID);
}
return strID.ToString();
}注意 string 虽然是引用类型,但是赋值是重新拷贝过的。dt重复创建不是好事(这个你自己优化)。
回复

使用道具 举报

千问 | 2009-7-26 15:08:15 | 显示全部楼层
static void getChild(int ID, string strID,ref DataTable dt)
{
//Pre:假设已知根节点的ID为1
int RootID = 1;
//ID,ParentID
DataRow[] drs=null;
if (ID != 0)
{
drs = dt.Select("ID= " + ID);
}
else
{
drs = new DataRow[dt.Rows.Count];
dt.Rows.CopyTo(drs, 0);
}
foreach (DataRow dr in drs)
{
string classid = dr["ParentID"].ToString();
strID = classid + "," + strID;
Console.WriteLine(strID);
if (classid != RootID.ToString())
{
getChild(Convert.ToInt32(classid), strID, ref dt);
}
}
}
回复

使用道具 举报

千问 | 2009-7-26 15:08:15 | 显示全部楼层
这个问题我我刚做过,我当时使用sql server2000数据库,使用存储过程写的,代码有点多,现在不在这里,想要的话下次发给你
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行