كيف أحصل على أسماء الأعمدة للطباعة في برنامج C# هذا؟

StackOverflow https://stackoverflow.com/questions/2557937

سؤال

لقد تجمعت معا برنامج C# الذي يأخذ ملف .csv ملف واكتبها إلى DataTable. باستخدام هذا البرنامج ، يمكنني حلقة كل صف من صفوف DataTable وطباعة المعلومات الواردة في الصف. يبدو أن إخراج وحدة التحكم مثل هذا:

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

أرغب في طباعة اسم العمود بجانب كل قيمة أيضًا ، بحيث يبدو ذلك:

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

هل يمكن لأحد أن ينظر إلى الكود الخاص بي ويخبرني بما يمكنني إضافته حتى يتم طباعة أسماء الأعمدة؟ أنا جديد جدًا على 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?
    }
}
هل كانت مفيدة؟

المحلول

تحتاج إلى حلقة loadDT.Columns, ، مثله:

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

نصائح أخرى

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

يمكنك الوصول إلى اسم العمود على وجه التحديد مثل هذا أيضًا إذا كنت لا ترغب في حلقة جميع الأعمدة:

Table.Columns [1] .ColumnName

رمز لإيجاد اسم العمود نفسه باستخدام Like في 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;
    }
}

طباعة صفوف DataTable مع العمود

Here is solution 

DataTable datatableinfo= new DataTable();

// Fill data table 

//datatableinfo=fill by function or get data from database

//Print data table with rows and column


for (int j = 0; j < datatableinfo.Rows.Count; j++)
{
    for (int i = 0; i < datatableinfo.Columns.Count; i++)    
        {    
            Console.Write(datatableinfo.Columns[i].ColumnName + " ");    
            Console.WriteLine(datatableinfo.Rows[j].ItemArray[i]+" "); 
        }
}


Ouput :
ColumnName - row Value
ColumnName - row Value
ColumnName - row Value
ColumnName - row Value
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top