Um... look at the error message:
System.Data.DataSet' does not contain a definition for 'Rows'
And then look at your code:
foreach (DataSet table in ds.Tables)
...
foreach (DataRow dr in table.rows)
...
Even ignoring that C# is case sensitive, so "rows" is not the same as "Rows" why do you expect a collection of DataTables in a DataSet to return a DataSet rather than a DataTable?
Try:
foreach (DataTable table in ds.Tables)
And correct the case.
And BTW: this is dangerous.
string[] Gh = new string[ds.Tables[0].Rows.Count];
Since there is nothing which guarantees that each table in the DataSet has the same number of rows.
I'd recommend that instead of filling a DataSet you fill a single DataTable and only use one loop. It's a lot safer, and more obvious exactly what you are trying to do.