सवाल DataRowCollection को DataRow में कनवर्ट करें []


DataRowCollection इंस्टेंस को DataRow [] में कनवर्ट करने का सबसे अच्छा तरीका क्या है?


44
2017-10-22 19:31


मूल




जवाब:


DataRow[] rows = dt.Select();

मान लीजिए कि आपको अभी भी डेटाटेबल तक पहुंच है।


90
2017-10-22 19:47



सरल जवाब, और सही। स्वीकृत उत्तर के रूप में चिह्नित किया जाना चाहिए। इस सवाल में अब 3,500 विचार हैं! - Stephen Hosking
Javaman59 से सहमत, मैंने एक मॉडरेटर के लिए समीक्षा करने के लिए सवाल झंडा दिया है। - si618


पूर्णता के लिए, यह एक और तरीका है (लिंक के साथ), और यह पंक्ति क्रम को संरक्षित करें:

DataRow[] rows = dt.Rows.Cast<DataRow>().ToArray()

13
2018-04-23 14:25





यह एक तरह का स्पष्ट है, लेकिन:

DataRowCollection.CopyTo(DataRow[] array, Int32 offset) ?

ऐसा लगता है कि कोई फर्क नहीं पड़ता कि आपको संग्रह को फिर से चालू करना होगा (CopyTo आंतरिक DataRowTree तत्वों को पुन: सक्रिय करता है)।

मुझे लगता है कि आप गैर-सार्वजनिक पेड़ तक पहुंचने के लिए प्रतिबिंब का उपयोग कर सकते हैं, लेकिन एक महत्वपूर्ण लागत पर।


5
2017-10-22 19:46





यदि आपके पास उस तालिका तक पहुंच नहीं है, तो आप एक्सटेंशन विधि का उपयोग कर सकते हैं:

public static class DataRowCollectionExtensions
{
    public static IEnumerable<DataRow> AsEnumerable(this DataRowCollection source)
    {
        return source.Cast<DataRow>();
    }
}

और उसके बाद:

DataRow[] dataRows = dataRowCollection.AsEnumerable().ToArray();

लेकिन यदि आपके पास उस तालिका में पहुंच है, तो इसका उपयोग करके पंक्तियों तक पहुंचना बेहतर होता है DataTableकी AsEnumerable विस्तार विधि (विवरण, स्रोत):

DataRow[] dataRows = dataTable.AsEnumerable().ToArray();

किसी भी तरह से आप उपयोग कर सकते हैं DataTableकी Select कई ओवरलोड के साथ विधि (विवरण, स्रोत):

DataRow[] dataRows = dataTable.Select();

4
2017-08-27 15:47