“Field”不是“System.Data.DataRow”的成员

本文关键字:成员 DataRow System Field 不是 Data | 更新日期: 2023-09-27 18:35:53

我正在使用VS2005进行 vb.net。我在下面的语句中收到编译错误。如何解决这个问题?

    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

“Field”不是“System.Data.DataRow”的成员

添加对System.Data.DataSetExtensions.dll的引用,然后您的代码就可以工作了。 Field是一个扩展方法,您需要添加引用,否则它将不起作用。

VS 2005 与 .net 2.0 ?

然后,不能添加对此 DLL 的引用。 需要面向 .NET 3.5 或更高版本才能使用这些扩展方法。

更新 2:对另一个更直接/更明确的答案投赞成票:-)


更新:虽然以下内容仍然适用,但 DataRowExtensions 类提供了一个DataRow.Field;请确保它被引用。


因为没有在DataRow类型上定义名为Field的成员...也许特殊Item属性是有意的?

请注意,在示例中,它用作索引器 ( row("Name") )。很整洁吧?

(此外,应该对Replace的结果执行一些操作,因为字符串在 .NET 中是不可变的。

快乐编码。

如果未显式强制转换 DataRow,也会发生此错误。(原始海报正确地执行此操作。

使用这个:

For Each rw As DataRow In data.Rows

不是这个:

For Each rw In data.Rows