在C#中:为什么System.Data.DataRow上没有’Item’?

我正在重写/转换一些VB代码:

Dim dt As New System.Data.DataTable() Dim dr As System.Data.DataRow = dt.NewRow() Dim item = dr.Item("myItem") 

C#:

 System.Data.DataTable dt = new System.Data.DataTable(); System.Data.DataRow dr = dt.NewRow(); var item = dr.Item["myItem"]; 

我不能让它在C#下运行,我遇到的问题是第三行var item = dr.Item["myItem"];

System.Data.DataRow' does not contain a definition for 'Item' and no extension method 'Item' accepting a first argument of type 'System.Data.DataRow' could be found (are you missing a using directive or an assembly reference?)

我在两个项目中都引用了System.Data Version 4。 我在这里想念的是什么? 注意:ItemArray同时存在于……

试试这样:

 var item = dr["myItem"]; 

在C#中,您可以直接访问索引器属性 。 并且DataRow.Item属性被定义为索引器。

C#中实际上没有“Item”属性。 在VB中,DataRow单元访问定义如下:

 Public Property Item ( column As DataColumn ) As Object 

所以有一个文字“Item”属性。 但是在C#中它定义如下:

 public object this[ DataColumn column ] { get; set; } 

所以这是类/对象的默认属性。 因此,您使用对象名称访问它。