2012-05-30 28 views
6

私はVS2005 for vb.netを使用しています。私は以下のステートメントでコンパイルエラーが発生しています。これを修正するには?'Field'は 'System.Data.DataRow'のメンバーではありません

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 

答えて

8

アップデート2:以下は、まだ適用されている間は、によって提供さDataRow.Field次のとおりです。アップ投票他のより直接的/明確な答えの更新が


:-)クラスDataRowExtensions;それが参照されていることを確認してください。


何のメンバーが存在しないので、おそらく特別Itemプロパティが代わりのものだった... DataRowタイプ上Fieldが定義されて呼ばれますか?

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

(文字列は.NETで不変であるとしても、何かがReplace結果で実行する必要があります。)

ハッピーコーディング。

+1

1+あなたの最初の投稿はOPは、.NET 2.0を使用しているため、正確です – Damith

14

System.Data.DataSetExtensions.dllへの参照を追加すると、コードが機能します。 FieldはExtensionメソッドで、参照を追加する必要があります。それ以外の場合は機能しません。

VS 2005 with .net 2.0?

このdllへの参照を追加することはできません。これらの拡張メソッドを使用するには、.net 3.5以上をターゲットにする必要があります。

2

このエラーは、明示的にDataRowをキャストしない場合にも発生します。 (オリジナルポスターはこれを正しくありません。)

使用この:

For Each rw As DataRow In data.Rows 

ないこの:

For Each rw In data.Rows