本帖最后由 fox_138025 于 2012-07-25 19:38:14 编辑

解决方案 »

  1.   

    给你一段代码自己领悟        private ArrayList lstkey = new ArrayList();
            private ArrayList lstparent = new ArrayList();
            private ArrayList lsttext = new ArrayList();
         public void Initial()
            {
                ArrayList lstmainkey = new ArrayList();
                ArrayList lstmaintext = new ArrayList();
                ArrayList lstchildkey = new ArrayList();
                ArrayList lstchildparent = new ArrayList();
                ArrayList lstchildtext = new ArrayList();            lstkey.Clear();
                lstparent.Clear();
                lsttext.Clear();
                this.Nodes.Clear();            if (this.BindingSource != null)
                {
                    DataView view = this.BindingSource.List as DataView;
                    if (view == null)
                    {
                        return;
                    }
                    DataTable dt = view.ToTable();
                    if (dt == null)
                    {
                        return;
                    }
                    int nodecount = dt.Rows.Count;
                    for (int i = 0; i < nodecount; i++)
                    {
                        lstkey.Add(dt.Rows[i][this.KeyField]);
                        lstparent.Add(dt.Rows[i][this.ParentField]);
                        lsttext.Add(dt.Rows[i][this.TextField]);
                    }
                    for (int i = 0; i < nodecount; i++)
                    {
                        if (lstkey[i].ToString() != lstparent[i].ToString())
                        {
                            if (lstparent[i].ToString() == string.Empty)
                            {
                                lstmainkey.Add(lstkey[i]);
                                lstmaintext.Add(lsttext[i]);
                            }
                            else
                            {
                                lstchildkey.Add(lstkey[i]);
                                lstchildparent.Add(lstparent[i]);
                                lstchildtext.Add(lsttext[i]);
                            }
                        }
                    }
                    int mainnodecount = lstmainkey.Count;
                    TreeNode[] nodemain = new TreeNode[mainnodecount];                for (int i = 0; i < mainnodecount; i++)
                    {
                        nodemain[i] = new TreeNode();
                        nodemain[i].Text = lstmaintext[i].ToString();
                        nodemain[i].Name = lstmainkey[i].ToString();
                        this.Nodes.Add(nodemain[i]);
                    }                int childnodecount = lstchildkey.Count;
                    TreeNode[] nodechild = new TreeNode[childnodecount];
                    for (int i = 0; i < childnodecount; i++)
                    {
                        nodechild[i] = new TreeNode();
                        nodechild[i].Text = lstchildtext[i].ToString();
                        nodechild[i].Name = lstchildkey[i].ToString();
                    }                for (int i = 0; i < childnodecount; i++)
                    {
                        for (int j = 0; j < mainnodecount; j++)
                        {
                            if (lstchildparent[i].ToString() == lstmainkey[j].ToString())
                            {
                                nodemain[j].Nodes.Add(nodechild[i]);
                            }
                        }
                        for (int k = 0; k < childnodecount; k++)
                        {
                            if (lstchildparent[i].ToString() == lstchildkey[k].ToString())
                            {
                                nodechild[k].Nodes.Add(nodechild[i]);
                            }
                        }
                    }
                    this.ExpandAll();
                }        }
      

  2.   

    看不太懂 我用 Silverlight开发 里面没有DataTable 这些东西
      

  3.   


    我写了个 ListSub(1)方法 用来取出每层数据实体  参数1是最上层的ID
     public static void ListSub(int id)
            {
                Team obj = TeamList().Where(u => u.ID == id).FirstOrDefault();
                if (obj == null)
                {
                    return;
                }
                else
                {
                    List<Team> objs = TeamList().Where(u => u.Fid == obj.ID).ToList();
                    foreach (Team role in objs)
                    {
                        obj.Challengers.Add(role);
                       // MessageBox.Show(obj.Name+"--"+role.Name);
                        ListSub(role.ID); //每个子集递归
                    }
                }
            }
    但是如何修改代码能返回和 GetTournament()方法一样的实体呢?