C# Net C的内部循环
我想检索所有用户id下一步在我输入的用户id通过引用id从表中相互引用之后,下面的代码给出了确切的结果,但它检索2001到2005年的所有用户id 我想如果我从文本框中输入2002作为用户id,那么它必须从2003-2005检索 表xyz列用户id的值=2001、2002、2003、2004、2005 表xyz列引用id的值=2000、2001、2002、2003、2004C# Net C的内部循环,c#,asp.net,.net,C#,Asp.net,.net,我想检索所有用户id下一步在我输入的用户id通过引用id从表中相互引用之后,下面的代码给出了确切的结果,但它检索2001到2005年的所有用户id 我想如果我从文本框中输入2002作为用户id,那么它必须从2003-2005检索 表xyz列用户id的值=2001、2002、2003、2004、2005 表xyz列引用id的值=2000、2001、2002、2003、2004 var gCmd = new SqlCommand(@"SELECT User_id FROM Table_xyz", n
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从表_xyz(其中User_id='2001')添加到第一个命令,但它只返回一个User_id与2001匹配的值这是最简单的解决方案。但是考虑重构你的代码或者思考另一种方法,这不是完美的。也可以考虑在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)
您可以尝试这个解决方案,首先您可以获得所有不同的reference\u ID,并在此基础上循环获得ID
感谢你们所有人,我的朋友们帮助我,但不幸的是,这并没有解决主要问题 经过大量的研究,我在递归命令中得到了答案,所以最后我的代码如下
string value = "2723022"; // <== any reference id from Reference_id column
String gCmd = "SELECT DISTINCT Reference_id FROM myTable WHERE User_id >'" + value + "'";
SqlDataAdapter Sda = new SqlDataAdapter();
Sda.SelectCommand = new SqlCommand(gCmd, nCon);
DataTable Dt = new DataTable();
Sda.Fill(Dt);
for (int count = 0; count < Dt.Rows.Count; count++)
{
string dCmd = "SELECT User_id FROM dEmo_aCcounts WHERE Reference_id = '" + Dt.Rows[count]["Reference_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]["User_id"]);
}
}
您在使用此代码时面临的问题是什么,?您是否调试以找出错误?是的,没有错误,但我认为我不理解逻辑,它只返回第一个值而不是REST。它只返回一个值,因为循环只运行一次。此数组var array=list.ToArray;只有一个值。实际上它是相同的,所以请在打开连接的第一个命令中添加引用id,然后查看。。。String cmd=从表A中选择不同的引用ID;我想添加wherereference_ID='0',类似于这个字符串cmd=SELECT DISTINCT Reference_ID FROM TableA,wherereference_ID='0';它将给出1个值,而我希望通过引用获取相互获取的整个ID。\u ID您在应用程序中尝试过此解决方案吗?因为这将为循环中的所有引用ID逐个提供所有ID。请把你的问题说得更清楚些。
string value = "2723022"; // <== any reference id from Reference_id column
String gCmd = "SELECT DISTINCT Reference_id FROM myTable WHERE User_id >'" + value + "'";
SqlDataAdapter Sda = new SqlDataAdapter();
Sda.SelectCommand = new SqlCommand(gCmd, nCon);
DataTable Dt = new DataTable();
Sda.Fill(Dt);
for (int count = 0; count < Dt.Rows.Count; count++)
{
string dCmd = "SELECT User_id FROM dEmo_aCcounts WHERE Reference_id = '" + Dt.Rows[count]["Reference_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]["User_id"]);
}
}