2010-02-23 6 views
2

ceci est mon code -boucle pour une variable chaîne

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

i besoin que la sortie soit comme celui-ci

Applicant1Name = MikeApplicant1lastName = ditkaApplicant2Name = TomApplicant2lastName = Brady ...

comment est-ce que je fais cela sans mettre le code suivant 50 fois - sortie & = "Demandeur" & i.tostring() + 1 & "Name =" & rangée (i) ("Nom") ... et ainsi de suite. Y at-il un moyen de faire une boucle pour et exécuter le candidat 1,2,3,4 .... en un seul coup? merci

Répondre

0

Vous ne pouvez vraiment pas comme vous essayez d'ajouter 50 champs différents. La seule chose que vous pouvez raccourcir le nom de la variable:

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

Ensuite, vous mettez simplement tous ensemble

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

où est la partie "Demandeur"? J'ai besoin de Demandant1Name, Demandant2Name et ainsi de suite pour comme 50 autres champs – iregy

0

semble que vous voulez créer un tableau de tous les champs que vous avez et inclure une boucle imbriquée.

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

Cela est inutile. Il peut parcourir les colonnes déjà existantes. Encore mieux à mon avis que d'avoir à lister tous les champs individuellement. – Teekin

+0

C'est vrai, je n'y ai pas pensé. La partie de mon cerveau qui stocke des informations sur DataSets et DataTables s'est atrophiée à cause d'une utilisation excessive d'ORM. – NerdFury

6

Essayez:

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 est plus rapide pour les concaténations de chaînes, et si vous gardez vos lignes dans un DataTable (que je suppose que se passe parce que ce à quoi ça ressemble vous les accès) , alors vous pouvez simplement parcourir les noms de colonnes au niveau supérieur.

+0

+1 pour la réponse correcte, et je vous donnerais +2 si je pouvais pour mentionner l'utilisation de StringBuilder. Il est difficile d'exagérer l'impact sur les performances de la concaténation de beaucoup de texte avec l'utilisation de chaînes uniquement. – Teekin

+0

+1 pour StringBuilder, il est étonnant la différence qu'il fait – CaffGeek

+0

la ligne - Foreach (col comme DataColumn dans dt.Columns), où dois-je déclarer col? – iregy

Questions connexes