2010-04-01 12 views
47

मैंने एक सी # प्रोग्राम को एक साथ जोड़ दिया है जो .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 

किसी ने मेरे कोड देख सकता सांत्वना उत्पादन इस तरह दिखता है और मुझे बताएं कि मैं क्या जोड़ सकता हूं ताकि कॉलम नाम प्रिंट हो जाए? मैं सी # के लिए बहुत नया हूं, इसलिए अगर मैंने कुछ अनदेखा किया है तो कृपया मुझे माफ़ कर दो।

// 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

उदाहरण के साथ एक विस्तृत ब्लॉग: http://sforsuresh.in/c-getting-column-name-dataset/ –

उत्तर

85

आप loadDT.Columns से अधिक पाश की जरूरत है, इस तरह::

यहाँ मेरी कोड है

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

बहुत बढ़िया! त्वरित प्रतिक्रिया के लिए बहुत बहुत धन्यवाद! – Kevin

+0

बस इतना मैं समझता हूं, लोडडटी पर इस लूप को चाहिए। कॉलम loadDT.Rows के लिए लूप के भीतर हो? – Kevin

+1

@ केविन: हाँ, आपका पहला लूप 'पंक्तियों' के लिए है, दूसरा 'कॉलम' के लिए है, तो आप वर्तमान पंक्ति में प्रत्येक कॉलम मान तक पहुंचने के लिए 'पंक्ति [कॉलम। कॉलमनाम]' का संदर्भ ले सकते हैं। –

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

कोड के लिए स्तंभ नाम एसक्यूएल में Like का उपयोग कर के रूप में ही हैं।

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; 
    } 
} 
संबंधित मुद्दे

 संबंधित मुद्दे