为了账号安全,请及时绑定邮箱和手机立即绑定

C#,关于DataTable的一个递归算法?

/ 猿问

C#,关于DataTable的一个递归算法?

慕运维8079593 2019-01-27 09:05:37

C#,关于DataTable的一个递归算法


查看完整描述

3 回答

?
大话西游666

public DataTable dt={你内存的表};
public string nodes=string.Empty;
private void GetAllNodes(string ID)
{
DataRow[] drs=dt.Select("PID="+ID);
if (drs.Length <= 0) return;
foreach (DataRow dr in drs)
{
nodes+=dr["ID"].ToString()+"-";
GetAllNodes(dr["PID"].ToString());
}
}

查看完整回答
反对 回复 2019-03-15
?
陪伴而非守候

帮你写了两个方法,你调下就可以了:
// 给树添加根节点
private void AddRootNode(TreeView tv, DataTable dt)
{
if (dt != null && dt.Rows.Count > 0)
{
foreach (DataRow dr in dt.Rows)
{
if (dr["pid"] != null && dr["pid"].ToString().Length > 0)
{
TreeNode root = new TreeNode(dr["name"].ToString());
tv.Nodes.Add(root);
AppendChildNode(root, dt, dr["id"].ToString());
}
}
}
}

  // 添加子节点
private void AppendChildNode(TreeNode node,DataTable dt, string id)
{
DataRow[] arrRows = dt.Select("pid='"+id+"'");
if (arrRows != null && arrRows.Length > 0)
{
foreach (DataRow dr in arrRows)
{
TreeNode tn = new TreeNode(dr["name"].ToString());
node.Nodes.Add(tn);
AppendChildNode(tn, dt, dr["id"].ToString());
}
}
}



查看完整回答
反对 回复 2019-03-15
?
慕森卡

给你一个思路吧,先通过给出的这个ID,获得这条记录,然后判断这条记录的pid是否为-1等之类的值,如果是,表明没有父类,如果有,再通过这个pid调用这个函数一次,以此类推,得出递归算法!

查看完整回答
反对 回复 2019-03-15

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信