2010-04-01 12 views
47

Połączyłem program C#, który pobiera plik .csv i zapisuje go do DataTable. Za pomocą tego programu mogę przechodzić przez każdy wiersz DataTable i drukować informacje zawarte w wierszu. Wyjście konsola wygląda następująco:Jak uzyskać nazwy kolumn do wydrukowania w tym programie C#?

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

Chciałbym, aby wydrukować nazwę kolumny obok każdej wartości, jak również tak, że wygląda to tak:

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

Może ktoś spojrzeć na mojego kodu i powiedz mi, co mogę dodać, aby wydrukować nazwy kolumn? Jestem bardzo nowy w C#, więc proszę wybacz mi, jeśli coś przeoczyłem.

Oto mój kod:

// 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? 
    } 
} 
+0

Szczegółowy blog z przykładem: http://sforsuresh.in/c-getting-column-name-dataset/ –

Odpowiedz

85

Trzeba pętli nad loadDT.Columns coś takiego:

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

Awesome! Dziękuję bardzo za szybką reakcję! – Kevin

+0

Po prostu tak rozumiem, czy ta pętla nad loadDT.Columns być w pętli dla loadDT.Rows? – Kevin

+1

@Kevin: tak, twoja pierwsza pętla jest dla '.Rows', druga dla' .Columns', wtedy możesz odwołać się do 'row [column.ColumnName]' aby uzyskać dostęp do każdej wartości kolumny w bieżącym wierszu. –

18
foreach (DataRow row in dt.Rows) 
{ 
    foreach (DataColumn column in dt.Columns) 
    { 
     ColumnName = column.ColumnName; 
     ColumnData = row[column].ToString(); 
    } 
} 
0

Kod Znajdź nazwę kolumny samo jak przy użyciu Like w sql.

foreach (DataGridViewColumn column in GrdMarkBook.Columns) 
         //GrdMarkBook is Data Grid name 
{      
    string HeaderName = column.HeaderText.ToString(); 

    // This line Used for find any Column Have Name With Exam 

    if (column.HeaderText.ToString().ToUpper().Contains("EXAM")) 
    { 
     int CoumnNo = column.Index; 
    } 
} 
Powiązane problemy