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:他のより直接的/明確な回答に賛成票を投じてください:-)


更新:以下は引き続き適用されますが、 DataRowExtensionsクラスによって提供される があります。参照されていることを確認してください。DataRow.Field


タイプに対して定義されたメンバーがField定義されていないためDataRow...おそらく、Item代わりに特別なプロパティが意図されていましたか?

インデクサーとして使用されている例に注意してください ( row("Name"))。いいですね。

(また、文字列は .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 に答える