Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在执行(dr.Read())时查找循环的最后一次执行?_C#_Asp.net - Fatal编程技术网

C# 如何在执行(dr.Read())时查找循环的最后一次执行?

C# 如何在执行(dr.Read())时查找循环的最后一次执行?,c#,asp.net,C#,Asp.net,看看下面的while循环 SqlDataReader dr; while (dr.Read()) { Response.Write("insert into test values(N'"+dr[0]+"', N'"+dr[1]+"'),<br>"); } SqlDataReader-dr; while(dr.Read()) { 响应。写入(“插入测试值(N'+dr[0]+”,N'+dr[1]+”),”; } 我只是在打印一些结尾带有逗号的东西(在此之前)。但是最后一次当它

看看下面的while循环

SqlDataReader dr;

while (dr.Read())
{

Response.Write("insert into test values(N'"+dr[0]+"', N'"+dr[1]+"'),<br>");

}
SqlDataReader-dr;
while(dr.Read())
{
响应。写入(“插入测试值(N'+dr[0]+”,N'+dr[1]+”),
”; }
我只是在打印一些结尾带有逗号的东西(在此之前
)。但是最后一次当它被打印出来的时候,我不想要那个逗号。
如何确定此循环是最后一次执行?因此,我可以通过修改逗号来避免打印该逗号。

不完全确定您到底需要什么,但基于:

但是最后一次当它被打印出来的时候,我不想要那个逗号

您可以在退出循环后使用

string str = yourstring.TrimEnd(',');
如果字符串末尾有逗号,它将删除它,如果没有逗号,它将保留字符串原样

编辑:错过响应。编写部分

您可以在while循环中构建一个字符串,然后使用
string.TrimEnd
,然后使用
Response.Write
,使用新字符串

您可以使用删除最后一个逗号的方法

删除中指定的一组字符的所有尾部匹配项 来自当前字符串对象的数组

你应该遵循类似的指示

string str = null;
while (dr.Read())
{

str += "insert into test values(N'"+dr[0]+"', N'"+dr[1]+"'),<br>";

}

str = str.TrimEnd(',');
Response.Write(str);
string str=null;
while(dr.Read())
{
str+=“插入测试值(N'+dr[0]+”,N'+dr[1]+”,
”; } str=str.TrimEnd(','); 反应。书写(str);
我会稍微调整一下。在读取器之前,实例化一个假布尔值。第一次阅读后,将其设置为true。然后,在读取代码中,如果为true,则在前一行中添加逗号和分隔符。这样,您就不必担心它是否是最后一行,因为没有下一行可以添加逗号和分隔符。

一般来说,不知道您是否在while循环的最后一次迭代中。 您可以使用,其中不是最后一次,而是第一次运行的循环是不同的,如下所示:

SqlDataReader dr = ...;

if (dr.Read())
{
  //no comma
  Response.Write("insert into test values(N'"+dr[0]+"', N'"+dr[1]+"')");
}

while (dr.Read())
{
  //put in a comma / break for the previous item
  Response.Write(",<br>insert into test values(N'"+dr[0]+"', N'"+dr[1]+"')");
}
StringBuilder sb = new StringBuilder();    
while (dr.Read())
{
  //put in a comma / break for the previous item
  sb.Append("insert into test values(N'"+dr[0]+"', N'"+dr[1]+"'),<br>");
}
sb.Remove(sb.Length-5,5); // remove the last ,<br>

Response.Write(sb.ToString());

恐怕您需要一个变量

        bool first=true;
        while (dr.Read())
        {
            if (first) first = false;
            else Response.Write(",<br>");
            Response.Write("insert into test values(N'" + dr[0] + "', N'" + dr[1] + "')");

        }
bool first=true;
while(dr.Read())
{
if(first)first=false;
else响应。写(“,
”); 写入(“插入测试值(N'+dr[0]+”,N'+dr[1]+”)”; }
像这样试试。。。这对你有帮助

SqlDataReader dr;

DataTable dt = new DataTable();

dt.Load(dr);

int _RowCount = dt.Rows.Count;

int inc = 0 ; 


while (dr.Read())
{

inc = inc + 1;

if(inc==_RowCount)

//Without Comma

else

//With Comma

}
inti=0;
while(dr.Read())
{
如果(i!=0)
{
响应。写入(“,
”); } 写入(“插入测试值(N'+dr[0]+”,N'+dr[1]+”)”; i++; }
它解决了我的问题。和@SWeko的解决方案也很有效。
非常感谢大家的帮助。

响应。Write
已经对字符串做了任何处理,现在修剪已经太晚了。@SWeko,你是对的。我错过了。我认为在这种情况下,OP可以在while循环中构建字符串,然后调用
Response。在修剪后的字符串上写入
。感谢您的响应。看起来不错。但是该逗号将打印在第一行的前面,对吗?不,第一行在
if
中处理,而不是在
while
中处理。
while
从第二行运行到最后一行。这种方法的缺点是,一些(几乎相同的)代码编写了两次,因此调试和维护比较困难。请核对我的答案。我希望它简单一点。好的。但我只需要在最后一次迭代时对其进行修剪。有什么方法可以找到它吗?在循环中的字符串上使用
+=
是的。@SWeko是的,当然,在循环中的字符串上使用StringBuilder看起来更好,但在这种情况下,我不认为这会是一个大问题。。
SqlDataReader dr;

DataTable dt = new DataTable();

dt.Load(dr);

int _RowCount = dt.Rows.Count;

int inc = 0 ; 


while (dr.Read())
{

inc = inc + 1;

if(inc==_RowCount)

//Without Comma

else

//With Comma

}
SqlDataReader dr;

while (dr.Read())
{

Response.Write("insert into test values(N'"+dr[0]+"', N'"+dr[1]+"'),<br>");

}
while (dr.Read())
    {

   string yourstring =  "insert into test values(N'"+dr[0]+"', N'"+dr[1]+"'),<br>";

    }
string str = yourstring.Substring(0, yourstring.Length - 1);
    int i = 0;
    while (dr.Read())
    {
        if (i != 0)
        {
            Response.Write(",<br>");
        }
        Response.Write("insert into test values(N'" + dr[0] + "', N'" + dr[1] + "')");
        i++;
    }