variable tipo query llenar inicializar convert con c# datarow implicit-typing

tipo - Uso de C#var para la tipificación implícita de System.Data.Datarow



llenar datatable con linq c# (4)

foreach (var row in table.Rows) { DoSomethingWith(row); }

Suponiendo que estoy trabajando con un System.Data.DataTable estándar (que tiene una colección de objetos System.Data.DataRow ), la variable ''fila'' anterior se resuelve como un tipo de object , no un System.Data.DataRow .

foreach (DataRow row in table.Rows) { DoSomethingWith(row); }

Funciona como yo esperaría. ¿Hay alguna razón en particular para esto?

Gracias.


Eso es porque Rows es DataRowCollection , que a su vez es IEnumerable y no IEnumerable<DataRow> , lo que significa que el tipo inferido será un object .

Cuando declara explícitamente el tipo en foreach , le indica a c # que agregue la conversión a cada llamada, razón por la cual funciona.


Prueba esto:

System.Data.DataTable dt = new System.Data.DataTable(); foreach (var row in dt.Rows.Cast<System.Data.DataRow>()) { }

Para usar Rows.Cast tienes que usar System.Linq.


Un elenco implícito sucede. También tenga en cuenta que se puede lanzar una excepción InvalidCastException si el lanzamiento no es posible.