Frage

Gibt es einen Grund, warum ich nicht die folgenden Möglichkeiten:

foreach (var Item in DataTable.Rows) {

, anstatt zu tun mit

foreach (DataRow Item in DataTable.Rows) {

Ich hätte gedacht, das möglich war, wie es auf anderen Datentypen ist. Zum Beispiel:

foreach (var Employee in Staff) { // string[] Staff etc...

Als ich die erste foreach-Schleife versuchen, erhalte ich die Fehler der CS0021:. Anwenden kann nicht Indizierung mit [], um einen Ausdruck des Typs ‚Objekts‘

Warum kann der Compiler herauszufinden, dass .Rows Gibt eine Sammlung von DataRows?

War es hilfreich?

Lösung

Rows effektiv kehrt IEnumerable (DataRowCollection), so dass der Compiler nur object als Typ für var auswählen können. Verwenden Rows.Cast<DataRow> wenn Sie wollen var verwenden.

Cast ist definiert auf Enumerable , so müssen Sie Systems umfassen .Linq.

Andere Tipps

Brian ist absolut richtig, über den Grund dafür, aber es gibt einen einfacheren Weg, es zu vermeiden: Verwenden Sie DataTableExtensions.AsEnumerable () :

foreach (var row in DataTable.AsEnumerable())
{
    ...
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top