Je voudrais faire quelque chose comme ceci dans .NET 3.5. Quel est le moyen le plus rapide?
IEnumerable<DataRow> collection =
TypedDataSet.TypedTableBase<DataRow>.Rows as IEnumerable<DataRow>;
En supposant que vous utilisiez .NET 4.0, qui introduit la covariance:
// 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;
Le type de table lui-même implémente IEnumerable<T> where T : DataRow
.
Autrement:
IEnumerable<DataRow> collection = myTypedTable.Cast<DataRow>();
Vous pouvez appeler OfType<DataRow>()
sur la DataRowCollection
.
Une solution simple consiste à utiliser la méthode "Select ()" d'un objet System.Data.DataTable, qui produit "DataRow []". A partir de cela, vous pouvez traiter comme un IEnumberable en utilisant Linq comme ci-dessous:
List<MyItem> items = dtItems.Select().Select(row => new MyItem(row)).ToList();
Fournir une liste utile d'objets pour chaque ligne.
Si vous incluez System.Data.DataSetExtensions.dll
dans votre projet, une méthode d'extension intégrée ajoute une méthode AsEnumerable()
.
IEnumerable<DataRow> collection = TypedDataSet.TypedTableBase<DataRow>.AsEnumerable();