在vb.net中为循环添加一个计数器到现有字符串
我有一个for循环,它是这样的:在vb.net中为循环添加一个计数器到现有字符串,vb.net,loops,for-loop,Vb.net,Loops,For Loop,我有一个for循环,它是这样的: for i = 0 as integer to 100 result &= "Name" & sqldr("name") result &= "Lastname" & sqldr("lastname") result &= "dob" & sqldr("dob") next sqldr是sql数据读取器,在这里并不重要 我希望我的最终结果是: Name1 = Sam Lastname1 =
for i = 0 as integer to 100
result &= "Name" & sqldr("name")
result &= "Lastname" & sqldr("lastname")
result &= "dob" & sqldr("dob")
next
sqldr是sql数据读取器,在这里并不重要
我希望我的最终结果是:
Name1 = Sam
Lastname1 = Davis
dob1 = 01/01/1966
Name2 =
...
Name3 =
等等,这取决于数据库中有多少记录。
如何在这个for循环中实现这一点?这样就可以了:
for i = 0 as integer to 100
result &= "ApplicantName" & i.ToString() & " = " & sqldr("name")
result &= "Lastname" & i.ToString() & " = " sqldr("lastname")
result &= "dob" & i.ToString() & " = " sqldr("dob") & "\n\n"
next
但是,为了获得更好的性能,您应该使用和:
StringBuilder还有一个重载,这使它更加容易:
Dim sb as StringBuilder = new StringBuilder()
for i = 0 as Integer to 100
sb.AppendFormat("ApplicantName{0} = {1}", i, sqldr("name")
sb.AppendFormat("Lastname{0} = {1}", i, sqldr("lastname")
sb.AppendFormat("dob{0} = {1}\n\n", i, sqldr("dob")
next
Dim result as String = sb.ToString()
首先,您应该使用StringBuilder,因为它比串联字符串更有效 因此,以下应该会产生预期的结果,对不起,我是C:
Dim sb as StringBuilder = new StringBuilder() ' that is where I am not so sure
for i = 0 as integer to 100
sb.AppendFormat("Name{0} = {1}", i, sqldr("name")
sb.AppendFormat("Lastname{0} = {1}", i, sqldr("lastname")
sb.AppendFormat("dob{0} = {1}", i, sqldr("dob")
next
result = sb.ToString()
在For循环之前,您需要进行一次选择。select将获取返回的记录总数。将该数字存储在变量中
Dim sqlcount as integer = 100 'this should actually be the result of your sql query
for i = 0 as integer to sqlcount
result &= "Name" & sqldr("name")
result &= "Lastname" & sqldr("lastname")
result &= "dob" & sqldr("dob")
i = i + 1
next
当处理较大的数字时,字符串连接不是很有效,请改用StringBuilder。@Obalix-我很清楚这一点。你添加评论时我正在编辑;对现有问题的轻微更正-结果应在其上有申请人前缀Application1Name=sam。。。application2name=…@wedds-真的吗?你自己搞不清楚从名称到应用程序名称的变化吗?做个好人,我没有你那么聪明。我同意StringBuilder是一个更好的方法,但是他说它需要循环找到的记录数。这意味着他需要从select语句返回一个计数。是的,如上所述,您应该使用String.Format和StringBuilder来获得更好的性能。
Dim sqlcount as integer = 100 'this should actually be the result of your sql query
for i = 0 as integer to sqlcount
result &= "Name" & sqldr("name")
result &= "Lastname" & sqldr("lastname")
result &= "dob" & sqldr("dob")
i = i + 1
next