如何在此C#程序中打印列名?

Kev*_*vin 59 c# datatable datarow datacolumn

我拼凑了一个C#程序,它接受一个.csv文件并将其写入DataTable.使用这个程序,我可以循环遍历每一行DataTable并打印出行中包含的信息.控制台输出如下所示:

--- Row ---
Item: 1
Item: 545
Item: 507
Item: 484
Item: 501
Run Code Online (Sandbox Code Playgroud)

我想在每个值旁边打印列名,以便它看起来像这样:

--- Row ---
Item: 1   Hour
Item: 545 Day1 KW
Item: 507 Day2 KW
Item: 484 Day3 KW
Item: 501 Day4 KW
Run Code Online (Sandbox Code Playgroud)

有人可以查看我的代码并告诉我我可以添加什么以便打印列名称吗?我对C#很新,所以如果我忽视了某些事情,请原谅我.

这是我的代码:

// 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?
    }
}
Run Code Online (Sandbox Code Playgroud)

SLa*_*aks 102

你需要循环loadDT.Columns,像这样:

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

  • @hellouworld:因为“DataColumnCollection”没有实现“IEnumerable<T>”,所以没有强类型枚举器供“var”推断类型。(此类早于泛型的存在) (2认同)

Yak*_*nor 22

foreach (DataRow row in dt.Rows)
{
    foreach (DataColumn column in dt.Columns)
    {
        ColumnName = column.ColumnName;
        ColumnData = row[column].ToString();
    }
}
Run Code Online (Sandbox Code Playgroud)


小智 5

如果您不想遍历所有列,也可以像这样访问列名:

table.Columns[1].ColumnName