<p>Currently, I'm using:</p>

<pre><code>DataTable dt = CreateDataTableInSomeWay();

List&lt;DataRow&gt; list = new List&lt;DataRow&gt;(); 
foreach (DataRow dr in dt.Rows)
{
    list.Add(dr);
}
</code></pre>

<p>Is there a better/magic way?</p>

You could use
```
```
List<DataRow> list = new List<DataRow>(dt.Select());
```
```
```
dt.Select()
```
will return all rows in your table, as an array of datarows, and the
```
List
```
constructor accepts that array of objects as an argument to initially fill your list with.