it-swarm.com.de

Konvertieren Sie DataRowCollection in IEnumerable <T>

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>;
55
Abdu

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>();
59
Dan Tao

Sie können OfType<DataRow>() über die DataRowCollection aufrufen. 

77
wsanville

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.

2

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