'Field'不是'System.Data.DataRow'的成员

时间:2012-05-30 04:24:12

标签: c# vb.net

我正在使用VS2005 for 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

3 个答案:

答案 0 :(得分:21)

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

VS 2005与.net 2.0?

然后你无法添加对这个dll的引用。你需要以.net 3.5或更高版本为目标来使用这些扩展方法。

答案 1 :(得分:10)

更新2:向上投票另一个更直接/明确的答案:-)


更新:,但仍然适用以下情况, DataRow.Field类提供的DataRowExtensions;确保它被引用。


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

在示例中注意它用作索引器(row("Name"))。干净,是吗?

(另外,应该使用Replace result 来完成某些事情,因为字符串在.NET中是不可变的。)

快乐的编码。

答案 2 :(得分:2)

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

使用此:

For Each rw As DataRow In data.Rows

不是这个:

For Each rw In data.Rows