2010-02-03 14 views
10

की एक सरणी में डेटाटेबल को परिवर्तित करें मैं ADO.NET और C# का उपयोग कर रहा हूं, और मैं DataTable ऑब्जेक्ट को DataRows की सरणी में कनवर्ट करना चाहता हूं। ऐसा करने का एक शानदार तरीका क्या है?ADO.NET: DataTows

उत्तर

19

मेरा पहला सवाल क्यों होगा? अनुरोध का कोई मतलब नहीं है।

जवाब है:

DataRow[] rows = myDataTable.Select(); 
+0

यह RowState == DataRowState.Deleted – Alex

+1

@Alex के साथ किसी भी पंक्तियां कॉपी प्रतीत नहीं होता है एक 'हटाए गए' राज्य के साथ अब तालिका का हिस्सा नहीं माना जाता है। अगर आप सत्यापित करना चाहते हैं, तो 'तालिका चुनें।) 'Table.Rows.Count' के साथ चयन करें। आप पाएंगे कि वे समान हैं। –

+0

आप बहुत अच्छे हैं! –

2

असल DataTable एक संपत्ति पंक्तियाँ कहा जाता है, डायन तरीकों यह करने के लिए प्रदान करता है।

List<System.Data.DataRow> r = d.Rows.AsQueryable().OfType<System.Data.DataRow>().ToList(); 
+0

वोट अप cuz मैं "LINQ" रास्ता की तलाश में था ... धन्यवाद! –

1

DataTable.Select() आप DataRows की एक सरणी देता है:

यदि आप ऐसा करने को पूरा कर सकते हैं। आप एक सरणी

Dim dt As New DataTable 
Dim dr() As DataRow = dt.Select() 

के रूप में उपयोग कर सकते हैं मामले में आप एक ArrayList चाहते हैं, आप

public ArrayList ConvertDT(ref DataTable dt) 
{ 
     ArrayList converted = new ArrayList(dt.Rows.Count); 
     foreach (DataRow row in dt.Rows) 
     { 
       converted.Add(row); 
     } 
     return converted; 
} 

मैं dt.rows.CopyTo समारोह का उपयोग नहीं किया जा सकता है। शायद यह भी काम करता है।

0

आप एक स्ट्रिंग के रूप सामग्री देखने के लिए, इस कोड का उपयोग करना चाहते हैं: ऐसा इसलिए है क्योंकि एक पंक्ति है:

string.Join(",", dataTable.AsEnumerable().SelectMany(row => row.ItemArray))