Warum kann ich nicht tun foreach (var Item in der DataTable.Zeilen)?
Gibt es einen Grund, warum ich das nicht tun können, die folgenden:
foreach (var Item in DataTable.Rows) {
anstatt zu tun
foreach (DataRow Item in DataTable.Rows) {
Ich hätte gedacht, dass dies möglich war, wie bei anderen Datentypen. Zum Beispiel:
foreach (var Employee in Staff) { //string[] Staff etc...
Wenn ich versuche die erste foreach-Schleife, bekomme ich den Fehler CS0021: kann Nicht angewendet werden, der Indizierung mit [] auf einen Ausdruck vom Typ "object".
Warum kann nicht der compiler heraus, dass .Zeilen gibt eine Sammlung von DataRows?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Rows
effektiv zurückIEnumerable
(DataRowCollection
), damit der compiler kann nur wählenobject
als Typ fürvar
. VerwendenRows.Cast<DataRow>
wenn Sie verwenden möchtenvar
.Cast
definiert ist Enumerable, so haben Sie zum System gehören.Linq -.Brian ist absolut richtig, über den Grund für dieses, aber es ist ein einfacher Weg, um dies zu vermeiden: verwenden Sie DataTableExtensions.AsEnumerable():
AsEnumerable
um zu binden mit anderen LINQ-Methoden.