цикл for в vb.net добавляет счетчик к существующей строке - PullRequest
0 голосов
/ 23 февраля 2010

У меня есть цикл 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 = Davis
dob1 = 01/01/1966

Name2 = 
...
Name3 = 

и т. Д. В зависимости от того, сколько записей в базе данных. Как сделать так, чтобы это происходило в цикле for?

Ответы [ 3 ]

1 голос
/ 23 февраля 2010

Ну, во-первых, вы должны использовать 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()
0 голосов
/ 23 февраля 2010

вам нужно сделать выбор перед циклом For. Выбор получит общее количество возвращенных записей. Сохраните это число в переменной.

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
0 голосов
/ 23 февраля 2010

Это сделает это:

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

Но для повышения производительности следует использовать string. Формат и StringBuilder :

Dim sb as StringBuilder = new StringBuilder()
for i = 0 as Integer to 100
    sb.Append(String.Format("ApplicantName{0} = {1}", i, sqldr("name"))
    sb.Append(String.Format("Lastname{0} = {1}", i, sqldr("lastname"))
    sb.Append(String.Format("dob{0} = {1}\n\n", i, sqldr("dob"))
next
Dim result as String = sb.ToString()

StringBuilder также имеет перегрузку AppendFormat , что делает это еще проще:

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...