Mi piacerebbe fare qualcosa di simile in .NET 3.5. Qual è il modo più veloce?
IEnumerable<DataRow> collection =
TypedDataSet.TypedTableBase<DataRow>.Rows as IEnumerable<DataRow>;
risposte:
54 per risposta № 1Supponendo di utilizzare .NET 4.0, che introduce la covarianza:
// 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;
Il tipo di tabella stesso attrezzi IEnumerable<T> where T : DataRow
.
Altrimenti:
IEnumerable<DataRow> collection = myTypedTable.Cast<DataRow>();
73 per risposta № 2
Puoi chiamare OfType<DataRow>()
sul DataRowCollection
.
2 per risposta № 3
Una semplice soluzione diretta consiste nell'utilizzare il metodo "Select ()" di un oggetto System.Data.DataTable, che produce "DataRow []". Da questo puoi trattare come IEnumberable usando Linq come di seguito:
List<MyItem> items = dtItems.Select().Select(row => new MyItem(row)).ToList();
Fornire un utile elenco di oggetti per ogni riga.
0 per risposta № 4
C'è un metodo di estensione incorporato se includi System.Data.DataSetExtensions.dll
al tuo progetto che aggiunge un AsEnumerable()
metodo.
IEnumerable<DataRow> collection = TypedDataSet.TypedTableBase<DataRow>.AsEnumerable();