我正在使用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
答案 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