/ / Converti DataRowCollection in IEnumerable <T> - c #, .net, linq, .net-3.5, ienumerable

Converti DataRowCollection in IEnumerable <T> - c #, .net, linq, .net-3.5, ienumerable

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 № 1

Supponendo 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();