数据源为datatable
结构如下:
id  name parentid
1  部门1  ""
2  部门2   1
3  部门3   1
4  部门4   2
……自关联形式表遍历表数据,形成所有相关联的name用逗号相连接的字符串数据集
如:
部门1,部门2,部门4
部门1,部门3在线等,谢谢大家

解决方案 »

  1.   

    string ss;
    for(int i=0;i<datatable.Rows.Count;i++)
    {
    ss+=datatable.rows[i]["name"]+",";
    }
    ss=ss.trim(',');
      

  2.   

    这是datatable 没有树那么多属性去判断是否有叶子
      

  3.   

    我也知道用递归 传参 是给一个字符串,还是一个字符串 加一个 处理后的 datatable
      

  4.   


     //数据源结构模拟
                DataTable dt = new DataTable();
                DataColumn dc;
                dc = new DataColumn("id", typeof(System.String));
                dt.Columns.Add(dc);            dc = new DataColumn("name", typeof(System.String));
                dt.Columns.Add(dc);            dc = new DataColumn("parentid", typeof(System.String));
                dt.Columns.Add(dc);            DataRow dr;
                dr = dt.NewRow();
                dr["id"] = "1";
                dr["name"] = "a1";
                dr["parentid"] = "x";
                dt.Rows.Add(dr);            dr = dt.NewRow();
                dr["id"] = "1";
                dr["name"] = "a2";
                dr["parentid"] = "y";
                dt.Rows.Add(dr);            dr = dt.NewRow();
                dr["id"] = "1";
                dr["name"] = "a3";
                dr["parentid"] = "x";
                dt.Rows.Add(dr);            dr = dt.NewRow();
                dr["id"] = "1";
                dr["name"] = "a4";
                dr["parentid"] = "y";
                dt.Rows.Add(dr);            dr = dt.NewRow();
                dr["id"] = "1";
                dr["name"] = "a5";
                dr["parentid"] = "x";
                dt.Rows.Add(dr);            Dictionary<string, List<string>> str = new Dictionary<string, List<string>>();
                //处理
                foreach (DataRow dr_ in dt.Rows)
                {
                    if (!str.ContainsKey(dr_["parentid"].ToString()))
                    {
                        str.Add(dr_["parentid"].ToString(), new List<string>());
                        ((List<string>)str[dr_["parentid"].ToString()]).Add(dr_["name"].ToString());
                    }
                    else
                    {
                        ((List<string>)str[dr_["parentid"].ToString()]).Add(dr_["name"].ToString());
                    }
                }
                //输出
                foreach (List<string> s in str.Values)
                {
                    Console.Write("\r\n");
                    foreach (string s_ in s)
                    {
                        Console.Write(s_ + ",");
                    }
                }            Console.ReadKey();
      

  5.   

    那好吧
    Dictionary<string, List<string>>换成Dictionary<List<string>, List<string>>这样ok了吧?