2011-02-03 15 views
18

मेरे पास DataTable है dt2 डेटा के साथ। मैं कुछ विशिष्ट पंक्तियां प्राप्त करने के लिए अपनी Select विधि को कॉल कर रहा हूं।डेटाटेबल को कैसे पास करें। चयन करें() परिणाम एक नया डेटाटेबल में?

DataRow[] foundRows; 

expression = "parent_id=1"; 

foundRows = dt2.Select(expression); 

मैं कैसे Select -method परिणाम एक नया DataTable को पारित कर सकते हैं - FilteredData कहा?

उत्तर

50

आप CopyToDataTable का उपयोग कर सकते हैं, IEnumerable<DataRow> प्रकारों पर उपलब्ध है।

var filteredData = dt2.Select(expression).CopyToDataTable(); 
+2

बस जो मैं देख रहा था धन्यवाद – DontFretBrett

12

इसके बजाय DataView का उपयोग क्यों नहीं करें?

DataView view = new DataView(dt2); 
view.RowFilter = "parent_id = 1"; 

DataView बहुत ज्यादा एक ही तरह से व्यवहार करेंगे कि एक DataTable होगा अतिरिक्त लाभ के साथ कि करने के लिए (इस मामले में dt2) DataTable अंतर्निहित स्वचालित रूप से DataView में भी परिलक्षित हुई किसी भी परिवर्तन (रों)।

7

बस स्पष्टता के लिए, Select विधि DataRow प्रकार की एक सरणी देता है। यही कारण है कि हमें CopyToDataTable() का उपयोग करने की आवश्यकता है। एलेक्स का जवाब अच्छा है। हालांकि, अगर Select किसी भी पंक्ति को वापस नहीं किया है, CopyToDataTable()InvalidOperationException फेंक देगा।

तो परीक्षण करें कि CopyToDataTable() का उपयोग करने से पहले कम से कम एक DataRow है।

var filteredDataRows = dt2.Select(expression); 

var filteredDataTable = new DataTable(); 

if(filteredDataRows.Length != 0) 
    filteredDataTable = filteredDataRows.CopyToDataTable(); 
संबंधित मुद्दे