Ich möchte so etwas in .NET 3.5 machen. Was ist der schnellste Weg?
IEnumerable<DataRow> collection =
TypedDataSet.TypedTableBase<DataRow>.Rows as IEnumerable<DataRow>;
Angenommen, Sie verwenden .NET 4.0, wodurch Kovarianz eingeführt wird:
// 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;
Der Table-Typ selbst implementiert IEnumerable<T> where T : DataRow
.
Andernfalls:
IEnumerable<DataRow> collection = myTypedTable.Cast<DataRow>();
Sie können OfType<DataRow>()
über die DataRowCollection
aufrufen.
Eine einfache direkte Lösung ist die Verwendung der Methode "Select ()" eines System.Data.DataTable-Objekts, die "DataRow []" erzeugt. Von hier aus können Sie mit Linq als IEnumberable wie folgt behandeln:
List<MyItem> items = dtItems.Select().Select(row => new MyItem(row)).ToList();
Bereitstellung einer nützlichen Liste von Objekten für jede Zeile.
Es gibt eine eingebaute Erweiterungsmethode, wenn Sie System.Data.DataSetExtensions.dll
in Ihr Projekt aufnehmen, das eine AsEnumerable()
-Methode hinzufügt.
IEnumerable<DataRow> collection = TypedDataSet.TypedTableBase<DataRow>.AsEnumerable();