2010-02-23 247 views
2

這是我的代碼 -for循環一個字符串變量

for i as integer = 0 to rows.count - 1 
    output &= "Name =" & row(i)("Name") 
    output &= "lastName =" & row(i)("lastName") 
... 50 more fields 
next 

我需要的輸出是這樣

Applicant1Name = MikeApplicant1lastName = ditkaApplicant2Name = TomApplicant2lastName =布雷迪...

如何我是否這樣做,而不把下面的代碼50次 - 輸出& =「申請人」& i.tostring()+ 1 &「Name =」&行(i)(「名稱」) ...等等。 有沒有辦法讓循環和運行申請人1,2,3,4 ....在一個鏡頭? 謝謝

回答

0

你真的不能當你試圖追加50個不同的領域。 可以縮短的唯一事情是變量名:

Dim strLN as String = row(i)("lastName") 
Dim strFirstName as String = row(i)("firstName") 

然後你只需把它放在一起

output &= strLN & strFirstName...etc 
+0

哪裏是「申請人」部分?我需要申請人姓名,申請人姓名 等等50個其他字段 – iregy 2010-02-23 18:34:16

0

看起來像你想創建你的所有字段的數組,然後包括一個嵌套的循環。

Dim fields As String() = {"Name", "LastName", "SSN", "Birthdate"} 
    Dim output As String = "" 

    For i As Integer = 1 To rows.count 
     For Each field As String In fields 
      output = String.Concat(output, "Applicant ", i, field, "=", row(i)(field), " ") 
     Next 
    Next 
+0

這是不必要的。他可以遍歷已存在的列。 在我看來,比單獨列出所有字段更好。 – Teekin 2010-02-23 18:35:07

+0

沒錯,沒有想到這一點。存儲有關DataSets和DataTables信息的我的大腦部分已經因過度使用ORM而萎縮。 – NerdFury 2010-02-23 18:41:59

6

嘗試:

Dim output as New StringBuilder("") 

For i as Integer = 0 To rows.Count - 1 
    output.append("Applicant" + i.ToString()) 
    Foreach(col as DataColumn in dt.Columns) ' The datatable where your rows are 
     Dim colName as string = col.ColumnName 
     output.append(colName & "=" & rows(i)(colName).ToString()) 
    Next 
    If i < rows.Count - 1 Then output.Append("|") 
Next 

StringBuilder的是更快的字符串連接,如果你把你的行中的一個數據表(我假設正在發生的事情,因爲這是它看起來像你訪問它們) ,那麼你可以遍歷頂層的列名。

+0

+1爲正確的答案,我會給你+2,如果我可以提及使用StringBuilder。僅僅使用字符串來拼接大量文本的性能影響是很難誇大的。 – Teekin 2010-02-23 18:35:49

+0

+1爲StringBuilder,這是令人驚歎的差異,它使 – CaffGeek 2010-02-23 18:43:54

+0

行 - Foreach(col作爲DataColumn在dt.Columns),我在哪裏申報上校? – iregy 2010-02-23 19:12:27