59 votes

Comment puis-je obtenir les noms des colonnes à imprimer dans ce programme C #?

J'ai bricolé un programme C# qui prend une .fichier csv et l'écrit dans une datatable. À l'aide de ce programme, je peux en boucle sur chaque ligne de la table de données et d'imprimer les informations contenues dans la ligne. La sortie de la console ressemble à ceci:

--- Row ---
Item: 1
Item: 545
Item: 507
Item: 484
Item: 501

Je voudrais imprimer le nom de la colonne à côté de chaque valeur, ainsi, de sorte qu'il ressemble à ceci:

--- Row ---
Item: 1   Hour
Item: 545 Day1 KW
Item: 507 Day2 KW
Item: 484 Day3 KW
Item: 501 Day4 KW

Quelqu'un peut-il regarder mon code et me dire ce que je peux ajouter, de sorte que la colonne des noms d'impression? Je suis très novice en C#, donc s'il vous plaît pardonnez-moi si j'ai oublié quelque chose. Voici mon code:

        // Write load_forecast data to datatable.
        DataTable loadDT = new DataTable();
        StreamReader sr = new StreamReader(@"c:\load_forecast.csv");                      

        string[] headers = sr.ReadLine().Split(',');
        foreach (string header in headers)
        {
            loadDT.Columns.Add(header); // I've added the column headers here.
        }

        while (sr.Peek() > 0)
        {
            DataRow loadDR = loadDT.NewRow();
            loadDR.ItemArray = sr.ReadLine().Split(',');
            loadDT.Rows.Add(loadDR);
        }

        foreach (DataRow row in loadDT.Rows)
        {
            Console.WriteLine("--- Row ---");
            foreach (var item in row.ItemArray)
            {
                Console.Write("Item:");
                Console.WriteLine(item); // Can I add something here to also print the column names?
            }
        }

103voto

SLaks Points 391154

Vous devez boucler sur loadDT.Columns , comme ceci:

 foreach (DataColumn column in loadDT.Columns)
{
    Console.Write("Item: ");
    Console.Write(column.ColumnName);
    Console.Write(" ");
    Console.WriteLine(row[column]);
}
 

22voto

Yakir Manor Points 1725
foreach (DataRow row in dt.Rows)
{
    foreach (DataColumn column in dt.Columns)
    {
        ColumnName = column.ColumnName;
        ColumnData = row[column].ToString();
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X