web-dev-qa-db-fra.com

Obtenir des valeurs de datarow dans une chaîne?

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?

25
Kevin

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();
        }
40
Khan

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.

24
SPFiredrake

Vous pouvez obtenir une valeur de colonnes en procédant ainsi

 rows["ColumnName"]

Vous devrez également convertir le type approprié.

 output += (string)rows["ColumnName"]
6
Matthew

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

3
Andrei G