2010-01-16 9 views
7

डेटाकॉलम मानों को तारों की सरणी में परिवर्तित करते समय सबसे अच्छा अभ्यास?डेटाकॉलम मानों को तारों की सरणी में परिवर्तित करते समय सबसे अच्छा अभ्यास?

[संपादित करें] सभी सभी DataTable पंक्तियों के लिए कुछ DataColumn के लिए मान स्ट्रिंग की एक सरणी के लिए परिवर्तित किया?

+2

क्या आप निर्दिष्ट कर सकते हैं? किसी भी Datarow में ItemArray प्रॉपर्टी है जो आपको उसी क्रम में ऑब्जेक्ट सरणी देता है क्योंकि इसके लिए कॉलम परिभाषित किया गया है। ऑब्जेक्ट्स को स्ट्रिंग्स में कनवर्ट करने के बाद प्रत्येक मान पर ToString() को कॉल करना जितना आसान होगा, लेकिन शायद यह कुछ और है जो आप चाहते हैं ... – flq

+0

डेटा कॉलम के मान स्ट्रिंग्स की सरणी में परिवर्तित किए जाएंगे, लेकिन मैं सबसे अच्छा ढूंढ रहा हूं इसे लागू करने के लिए विधि। – Ahmed

उत्तर

17

आप एक विशेष स्तंभ निर्दिष्ट करना चाहते हैं और एक के रूप में अपने सभी मान -

http://msdn.microsoft.com/en-us/library/system.data.datatableextensions.aspx

और DataRowExtensions वर्ग - आप DataTableExtensions वर्ग की जांच करनी चाहिए स्ट्रिंग सरणी उदाहरण के लिए,

int columnIndex = 2; // desired column index 

// for loop approach   
string[] results = new string[dt.Rows.Count]; 
for (int index = 0; index < dt.Rows.Count; index++) 
{ 
    results[index] = dt.Rows[index][columnIndex].ToString(); 
} 

// LINQ 
var result = dt.Rows.Cast<DataRow>() 
        .Select(row => row[columnIndex].ToString()) 
        .ToArray(); 

आप columnName साथ columnIndex बजाय बदल सकते:

बाहर इन तरीकों का प्रयास करें

string columnName = "OrderId";" 

संपादित करें: आप एक स्ट्रिंग सरणी के लिए पूछा है विशेष रूप से, लेकिन मामले में आप उन उदाहरणों के बारे में लचीले हैं जिन्हें मैं List<string> पसंद करूंगा ताकि पहले उदाहरण में लूप से पहले सरणी की लंबाई निर्धारित करने की आवश्यकता से बच सकें और बस इसे जोड़ सकें इसके लिए एमएस। इसके बजाय फ़ोरैच लूप का उपयोग करने का भी एक अच्छा अवसर है।

इस प्रकार मैं तो कोड को फिर से लिखने होगा:

List<string> list = new List<string>(); 
foreach (DataRow row in dt.Rows) 
{ 
    list.Add(row[columnIndex].ToString()); 
} 
1

DataRow.ItemArray संपत्ति -

http://msdn.microsoft.com/en-us/library/system.data.datarow.itemarray.aspx

इसके अलावा, कौन सा संस्करण उपयोग कर रहे हैं? अगर मैं अपने लक्ष्य को समझ में आ

http://msdn.microsoft.com/en-us/library/system.data.datarowextensions.aspx

+0

'DataRow.ItemArray' एक सरणी के रूप में एक पंक्ति में सभी मान देता है। मुझे लगता है कि ओपी एक कॉलम में सभी मानों को सरणी के रूप में चाहता है। शायद आप यह समझने में सहायता के लिए अपने उत्तर का विस्तार कर सकते हैं कि 'DataRow.ItemArray' और' DataTableExtensions' क्लास कैसे मदद कर सकता है? – Ben

0

मैं जानता हूँ कि इस सवाल पुराना है, लेकिन मैं अपने गूगल खोज में यह पाया समान कुछ करने के लिए कोशिश कर रहा। मैं अपने डेटाटेबल की एक विशिष्ट पंक्ति में निहित सभी मूल्यों से एक सूची बनाना चाहता था। नीचे मेरे कोड उदाहरण में, मैंने जीयूआई जादूगरों का उपयोग करके विजुअल स्टूडियो में अपने प्रोजेक्ट में एक SQL डेटास्रोत जोड़ा और मैंने आवश्यक तालिका एडाप्टर को डिजाइनर में गिरा दिया।

'Create a private DataTable 
Private authTable As New qmgmtDataSet.AuthoritiesDataTable 

'Fill the private table using the table adapter 
Me.AuthoritiesTableAdapter1.Fill(Me.authTable) 

'Make the list of values 
Dim authNames As List(Of String) = New List(Of String)(From value As qmgmtDataSet.AuthoritiesRow In Me.authTable.Rows Select names.authName) 
संबंधित मुद्दे

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