में कनवर्ट करें मैं .NET 3.5 में ऐसा कुछ करना चाहता हूं। सबसे तेज़ तरीका क्या है?DataRowCollection को IENumerable <T>
IEnumerable<DataRow> collection =
TypedDataSet.TypedTableBase<DataRow>.Rows as IEnumerable<DataRow>;
में कनवर्ट करें मैं .NET 3.5 में ऐसा कुछ करना चाहता हूं। सबसे तेज़ तरीका क्या है?DataRowCollection को IENumerable <T>
IEnumerable<DataRow> collection =
TypedDataSet.TypedTableBase<DataRow>.Rows as IEnumerable<DataRow>;
आप .NET 4.0, जो सहप्रसरण का परिचय का उपयोग कर रहे मान लिया जाये:
// Presumably your table is of some type deriving from TypedTableBase<T>,
// where T is an auto-generated type deriving from DataRow.
IEnumerable<DataRow> collection = myTypedTable;
table type itself औजार IEnumerable<T> where T : DataRow
।
अन्यथा:
IEnumerable<DataRow> collection = myTypedTable.Cast<DataRow>();
आप DataRowCollection
पर OfType<DataRow>()
कॉल कर सकते हैं।
यह सबसे आसान समाधान है –
स्वीकार्य उत्तर होना चाहिए! –
यह DataRowCollection पर कास्ट
एक सरल प्रत्यक्ष समाधान "() का चयन करें" एक System.Data.DataTable वस्तु है, जो "DataRow []" का उत्पादन करने की विधि का प्रयोग है। प्रत्येक पंक्ति के लिए वस्तुओं की एक उपयोगी सूची प्रदान
List<MyItem> items = dtItems.Select().Select(row => new MyItem(row)).ToList();
: इस से आप नीचे दिए गए की तरह Linq का उपयोग कर एक IEnumberable के रूप में इलाज कर सकते हैं।
यदि आप AsEnumerable()
विधि जोड़ते हैं तो इसमें System.Data.DataSetExtensions.dll
शामिल है, तो विस्तारित एक विस्तृत विधि है।
IEnumerable<DataRow> collection = TypedDataSet.TypedTableBase<DataRow>.AsEnumerable();
यह और wsanville के उत्तर मेरे लिए प्रासंगिक थे। ऐसा होता है कि कास्ट अपवाद फेंकता है जब उसे कोई ऐसा आइटम मिलता है जिसे TResult में नहीं डाला जा सकता है। दूसरी तरफ, ऑफ टाइप केवल उन वस्तुओं को लौटाता है जो प्रकार ट्रेशल्ट हैं। Https://msdn.microsoft.com/en-us/library/bb360913(v=vs.110).aspx पर प्रलेखन देखें –
Th3B0Y