J'ai un ensemble de données appelé "résultats" avec plusieurs lignes de données. J'aimerais obtenir ces données dans une chaîne, mais je n'arrive pas à comprendre comment le faire. J'utilise le code ci-dessous:
string output = "";
foreach (DataRow rows in results.Tables[0].Rows)
{
output = output + rows.ToString() + "\n";
}
Cependant, je pense que je manque quelque chose parce que cela ne fonctionne pas. Quelqu'un peut me diriger dans la bonne direction?
Vous devez spécifier de quelle colonne de la ligne de données vous souhaitez extraire les données.
Essayez ce qui suit:
StringBuilder output = new StringBuilder();
foreach (DataRow rows in results.Tables[0].Rows)
{
foreach (DataColumn col in results.Tables[0].Columns)
{
output.AppendFormat("{0} ", rows[col]);
}
output.AppendLine();
}
Je l'ai fait beaucoup moi-même. Si vous avez juste besoin d'une liste séparée par des virgules pour toutes les valeurs de ligne, vous pouvez le faire:
StringBuilder sb = new StringBuilder();
foreach (DataRow row in results.Tables[0].Rows)
{
sb.AppendLine(string.Join(",", row.ItemArray));
}
Un StringBuilder est la méthode préférée car la concaténation de chaînes est considérablement plus lente pour de grandes quantités de données.
Vous pouvez obtenir une valeur de colonnes en procédant ainsi
rows["ColumnName"]
Vous devrez également convertir le type approprié.
output += (string)rows["ColumnName"]
Votre objet rows
contient un attribut Item
où vous pouvez trouver les valeurs de chacune de vos colonnes. Vous ne pouvez pas vous attendre à ce que les colonnes se concaténent lorsque vous effectuez une .ToString()
sur la ligne. Vous devez accéder à chaque colonne de la ligne séparément, utilisez un for
ou un foreach
pour parcourir le tableau de colonnes.
Ici, jetez un œil à la classe:
http://msdn.Microsoft.com/en-us/library/system.data.datarow.aspx