关于递归调用

今天看了个小练习,让在一个TreeView上显示全国省市区,通过递归调用可以解决此类问题。代码如下:

关于数据库建库脚本见附件,其中只用了前三个字段。提醒一下大家:第三个字段的含义是他的父节点的id是几。

但是感觉递归调用的效率并不高,如果可以找到其他方法就优先使用其他方法。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace C1
{
    public partial class Form1 : Form
    {
        private List<Info> list = new List<Info>();
        public Form1()
        {
            InitializeComponent();
        }

        private void btnStart_Click(object sender, EventArgs e)
        {
            SqlConnection conn = new SqlConnection("Data Source=SH\\SQL_SH;Initial Catalog=地区数据;User ID=sunhao;Password=251314");
            SqlCommand cmd = new SqlCommand("select ar_id,ar_name,ar_uid from Area", conn);
            conn.Open();
            SqlDataReader rd = cmd.ExecuteReader();
            if (rd.HasRows)
            {
               
                while (rd.Read())
                { 
                    Info inf = new Info();
                    inf.Id = rd.GetInt32(0);
                    inf.Name = rd.GetString(1);
                    inf.U_id = rd.GetInt32(2);
                    list.Add(inf);
                }
            }
            AddTreeNodes(0,treeView1.Nodes[0]);
           // MessageBox.Show(treeView1.Nodes[0].ToString());
        }
        //
        private void Form1_Load(object sender, EventArgs e)
        {

        }

        public void AddTreeNodes(int id, TreeNode tn)
        {
            foreach (Info item in list)
            {
                if (item.U_id == id)
                {
                    TreeNode node = new TreeNode();
                    node.Text = item.Name;
                    tn.Nodes.Add(node);
                    AddTreeNodes(item.Id,node);
                }


            }
        }

    }
}    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值