2012-05-30 11 views
6

Estoy usando VS2005 para vb.net. Estoy obteniendo un error de compilación en la siguiente declaración. ¿Cómo arreglar esto?'Campo' no es un miembro de 'System.Data.DataRow'

For Each rw As DataRow In data.Rows 
     For Each dc As DataColumn In stringColumns 
      rw.Field(Of String)(dc).Replace("_x00D_", "") //Error showing here 
     Next 
    Next 

Respuesta

8

Actualización 2: Up-voto la otra respuesta más directa/claro :-)


Actualización: mientras que el siguiente todavía se aplica, no es un DataRow.Field proporcionada por la clase DataRowExtensions; asegúrese de que esté referenciado.


Debido a que no hay ningún miembro llama Field definida sobre el tipo DataRow ... quizás el Item propiedad especial estaba destinado en su lugar?

Nota en el ejemplo donde se utiliza como un indexador (row("Name")). Limpio, ¿eh?

(También, algo que se debe hacer con el resultado del Replace como cadenas son inmutables en .NET.)

feliz de codificación.

+1

1+ su primer mensaje es correcto, ya que la OP utilizando .NET 2.0 – Damith

14

Agregue una referencia a System.Data.DataSetExtensions.dll luego su código funcionará. Field es un método de extensión que necesita para agregar la referencia; de lo contrario, no funcionará.

VS 2005 con .net 2.0?

luego no puede agregar referencia a este dll. debe dirigirse a .net 3.5 o superior para usar estos métodos de extensión.

2

Este error también se producirá si no se emite explícitamente el DataRow. (El cartel original hace esto correctamente.)

Utilice esta:

For Each rw As DataRow In data.Rows 

No es esto:

For Each rw In data.Rows 
Cuestiones relacionadas