Question: I'm rewriting/converting some VB-Code:

```
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"];

```

I can't make it run under C#, the problems I have is the third row `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?)`

I referenced `System.Data` Version 4 in both projects. What am I missing here? Note: ItemArray exists in both...

Answer: 
Try like this:

```
var item = dr["myItem"];

```

In C# you can access the [indexer property](http://msdn.microsoft.com/en-us/library/2549tw02.aspx) directly. And the [DataRow.Item](http://msdn.microsoft.com/en-us/library/system.data.datarow.item.aspx) property is defined as indexer.
There is actually no "Item" property in C#. In VB the DataRow cell access is defined like this:

```vb
Default Public Property Item (
    column As DataColumn
) As Object

```

So there is a literal "Item" property. However, in C# it is defined like this: 

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

```

So this is the default property of the class / object. So you access it with the object name.