2010-03-17 49 views
8

He siguiente excepción 'System.Data.DataRow' en el bucle foreachNo se puede convertir objeto de tipo 'System.Data.DataRowView' para escribir

No se puede convertir objeto de tipo 'System.Data. DataRowView 'al tipo ' System.Data.DataRow '

¿Cómo resolver el problema?

+0

Bastante seguro de que puedo adivinar éste, pero publicar su código en primer lugar por si acaso. (El bucle "foreach".) –

+0

I eliminado la etiqueta de WPF, ya que la cuestión no tiene nada que ver con WPF –

Respuesta

18

A DataRowView no es un DataRow, y no es convertible a DataRow. Sin embargo, se puede acceder al DataRow correspondiente utilizando la propiedad :

foreach(DataRowView drv in dataView) 
{ 
    DataRow row = drv.Row; 
    ... 
} 
+0

foreach (DataRow en dtrCurrentRow (((System.Data.DataView) lstData.ItemsSource)). Table.Rows) { } He usado el código anterior para obtener mi resultado, lstData es el control de la lista de wpf. Gracias por tu ayuda. –

+0

También puede hacer esto en una línea usando LINQ: 'foreach (DataRow en fila dataView.Select (DRV => drv.Row))' –

0

Parece que usaste DataRow como el tipo de variable de bucle foreach mientras en realidad estás iterando enumerable con el tipo DataRowView. Compruebe si DataRowView tiene la funcionalidad que necesita, de ser así puede reemplazar una con otra. O puede modificar su código para devolver enumerable con DataRow en lugar de uno con DataRowView.

0

En lugar de foreach(DataRow dr in myDataView), intente
foreach(DataRowView drv in myDataView).

1

Puedes lanzar como:

datarow= DirectCast (System.Data.DataRowView, System.Data.DataRow).row 
Cuestiones relacionadas