11

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

    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
4

3 回答 3

27

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

VS 2005 与 .net 2.0 ?

那么你不能添加对这个 dll 的引用。您需要以 .net 3.5 或更高版本为目标才能使用这些扩展方法。

于 2012-05-30T04:37:15.987 回答
10

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


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


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

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

(此外,应该对as 字符串在 .NET 中不可变的结果进行处理。)Replace

快乐编码。

于 2012-05-30T04:26:43.027 回答
2

如果您不显式转换 DataRow,也会发生此错误。(原始海报正确地做到了这一点。)

用这个:

For Each rw As DataRow In data.Rows

不是这个:

For Each rw In data.Rows
于 2014-10-24T12:32:03.153 回答