表结构Class_id   Parentid
1           0
2           1
3           1
4           3
5           3
6           3
7           6private string AllClassID(int Class_ID,int C_Parentid)
    {
string Result="";
string StrSql="Select * from NksClass where Parentid="+Class_ID;
SqlDataReader dr=SQLDB.TableReader(StrSql);
while(dr.Read())
{
Result=Result+Convert.ToInt32(dr[0]);
AllClassID(Convert.ToInt32(dr[0]),C_Parentid);
}
return Result;
    }我现在想读到Parentid为1的,那么上面这个程序返回的值是Class_id=2,Class_id=3
我现在想做的是:级联取出Class_id=3之后再取出Parentid=3,,那么此时就应取到了Class_id=4,Class_id=5,Class_id=6,且取出了Parentid=6的Class_id=7,最后返回的结果集应该为:2,3,4,5,6,7请问我上面的程序应该如何修改才能返回正确的值,我在类内部输出的时候这样是正确的,返回值的话只能得到2,3两个值.

解决方案 »

  1.   

    使用一个ref 参数 获取返回值
      

  2.   


        //用ref來實現
        public void AA()
        {
            string temp = AllClassID(ref class_id, ref c_parentid);
        }    private string AllClassID(ref int Class_ID, ref int C_Parentid)
        {
            string Result = "";
            string StrSql = "Select * from NksClass where Parentid=" + Class_ID;
            SqlDataReader dr = SQLDB.TableReader(StrSql);
            while (dr.Read())
            {
                Result = Result + Convert.ToInt32(dr[0]);
                AllClassID(Convert.ToInt32(dr[0]), C_Parentid);
            }
            return Result;
        }
      

  3.   


    private string AllClassID(int Class_ID,int C_Parentid) 
        { 
    string Result=""; 
    string StrSql="Select * from NksClass where Parentid="+Class_ID; 
    SqlDataReader dr=SQLDB.TableReader(StrSql); 
    while(dr.Read()) 

    Result=Result+Convert.ToInt32(dr[0]); 
    AllClassID(Convert.ToInt32(dr[0]),C_Parentid); 

    return Result; 
        } 你这代码严重有问题
      

  4.   

    把return Result; 作为全局变量,问题解决了,谢谢,给分了.