C#递归问题
数据库数据如下
parID	             ID	                  name	                   
0	            1000	                  中国	                         
1000	            10001000	         北京                              	
1000	            10002000	         上海	
1000	            10003000	         四川	
10001000	            100010001001	         海淀	
10001000	            100010001002	         通州	
10002000	            100020001001	         宝山	
10003000	            100030001001	         成都	
10003000	            100030001002	         达州	
100030001002	   1000300010011001	双流	
100030001002	   1000300010011002	温江
现在根据条件查询出4条数据,分别是“通州”“四川”“成都”“温江”
,要把这四条数据展现在treeview上,现在给出他们的root是“中国”,
最后形式为:
“中国”
   |——————通州
   |——四川
         |———成都
	       |———温江
注意:取出的“通州”父节点应该是“北京”,因为“北京”不在取出的数据中,往上类推,“北京”的父节点是“中国”,所以最后“通州”的父节点是“中国”,跟“四川”一样都是“中国”的子节点。
------解决方案--------------------if(a==1)return 0;
else func(--a);
------解决方案--------------------不知道这个对你是否有参考:http://dotnet.aspx.cc/file/Recursion-Genernate-XML.aspx
------解决方案--------------------我的做法是,先对数据排序,先把最顶级的排在最前,遍历递归,这样保证添加子节点时,第一层节点都存在
------解决方案--------------------public class MenuInfo
{
   public MenuName{get;set} //结点名称
    putlic parentID{get;set;} //结点parentid
}
/// <summary>
       /// 首先添加一个根结点
       /// </summary>
       public void AddRootNode()
       {
           TreeViewItem item = new TreeViewItem();
           item.Header = "中国";
           item.IsSelected = true;
           item.IsExpanded = true;
           TV_TreeView.Items.Add(item);
           //添加子节点
             AddTreeViewNode( 1000, TV_TreeView.SelectedItem as TreeViewItem);
       }
/// <summary>
       /// 添加treeview结点
       /// </summary>
       /// <param name="parentID"></param>
       /// <param name="item"></param>
       private void AddTreeViewNode(int parentID, TreeViewItem item)
       {
           try
           {
//MenuInfo是实体类、存储所有结点数据--menulist是MenuInfo对象的集合
               List<MenuInfo> list = (from lst in menuList
                                      where lst.ParentID == parentID
                                      select lst).ToList();
               if (list.Count > 0)
               {
                   foreach (MenuInfo menuInfo in list)
                   {
                       TreeViewItem treeViewItem = new TreeViewItem();
                       treeViewItem.Header = menuInfo.MenuName;
                       treeViewItem.DataContext = menuInfo;
                       item.Items.Add(treeViewItem); 
                       AddTreeViewNode(menuInfo.AutoID, treeViewItem);
                   }
               }
           }
           catch (Exception ex)
           {
               MessageBox.Show(ex.Message, "系统错误", MessageBoxButton.OK);
           }
       }
------解决方案--------------------
------解决方案--------------------