循环内部循环.Net C#

时间:2017-08-03 12:14:17

标签: c# asp.net .net

我希望在我输入的User_id之后通过Reference_id从表中引用彼此之后检索所有User_id,下面的代码给出了确切的结果,但它从“2001到2005”检索了所有User_id。

我想如果我从文本框输入“2002”作为User_id,那么它必须从“2003 - 2005”中检索

Table_xyz列User_id具有值= 2001,2002,2003,2004,2005 Table_xyz列Reference_id具有值= 2000,2001,2002,2003,2004

var gCmd = new SqlCommand(@"SELECT User_id FROM Table_xyz", nCon);
SqlDataAdapter Sda = new SqlDataAdapter(gCmd);
DataTable Dt = new DataTable();
Sda.Fill(Dt);

for (int i = 0; i < Dt.Rows.Count; i++)
{
    string referenceid = Dt.Rows[i]["User_id"].ToString();

    var gCmd1 = new SqlCommand(@"SELECT User_id FROM Table_xyz 
    WHERE Reference_id = '" + referenceid + "'", nCon);

    SqlDataAdapter Sda1 = new SqlDataAdapter(gCmd1);
    DataTable Dt1 = new DataTable();
    Sda1.Fill(Dt1);

    Response.Write(referenceid);
}         

我尝试将“SELECT User_id FROM Table_xyz WHERE User_id ='2001'”添加到第一个命令,但它只返回一个值,其中User_id匹配“2001”

3 个答案:

答案 0 :(得分:0)

这是最简单的解决方案。但是考虑重构代码或考虑另一种方法,这不是完整的。还要考虑在sql命令中使用参数。

            string initialId = Dt.Rows[0]["ID"].ToString();
            do
            {
                string dCmd = "SELECT ID FROM TableA WHERE Reference_ID = '" + initialId + "'";
                SqlDataAdapter dSda = new SqlDataAdapter();
                dSda.SelectCommand = new SqlCommand(dCmd, nCon);
                DataTable dDt = new DataTable();

                dSda.Fill(dDt);

                for (int i = 0; i < dDt.Rows.Count; i++)
                {
                    initialId = dDt.Rows[i]["ID"];
                    Response.Write(dDt.Rows[i]["ID"]);
                }
            }
            while(dDt.Rows.Count > 0)

答案 1 :(得分:0)

您可以尝试此解决方案,首先您可以获得所有不同的Refrence_ID,并根据您可以循环获取IDs

var gCon = ConfigurationManager.ConnectionStrings["myCon"].ConnectionString;
using (var nCon = new SqlConnection(gCon))
{
    try
    {
        nCon.Open();
        String cmd = "SELECT DISTINCT Refrence_ID FROM TableA";
        SqlDataAdapter adapter = new SqlDataAdapter();
        adapter.SelectCommand = new SqlCommand(cmd, nCon);
        DataTable Dt = new DataTable();
        adapter.Fill(Dt);

        for (int count = 0; count < Dt.Rows.Count(); count++)
        {
            string dCmd = "SELECT ID FROM TableA WHERE Reference_ID = '" + dt.Rows[count]["Refrence_ID"] + "'";
            SqlDataAdapter dSda = new SqlDataAdapter();
            dSda.SelectCommand = new SqlCommand(dCmd, nCon);
            DataTable dDt = new DataTable();
            dSda.Fill(dDt);

            for (int i = 0; i < dDt.Rows.Count; i++)
            {
                Response.Write(dDt.Rows[i]["Distributor_ID"]);
            }
        }
    }
    catch (Exception e)
    {
        Response.Write(e.ToString());
    }
    finally { nCon.Close(); }
}

答案 2 :(得分:0)

感谢各位朋友帮助我,但不幸的是,这并没有解决主要问题。

经过多次研究后,我得到了我的回答&#34;递归命令&#34;,所以最后我的代码在下面

 $(".btn").click(function(){
      $(".col-xs-6 , .btn").toggleClass('animated slideOutDown');
      $(".btn i").toggleClass('fa-chevron-up');
      $(".btn i").toggleClass('fa-chevron-down');

  });