Try this, it will take a dataset you pass to it and return a new dataset with the tables ordered appropriately by name.
Imports System.Collections.Generic
Function OrderDatatables(ByVal ds As DataSet) As DataSet
Dim tableList As New SortedList(Of String, DataTable)
Dim sortedDataset As New DataSet
For Each table As DataTable In ds.Tables
tableList.Add(table.TableName, table)
Next
For Each tableItem As KeyValuePair(Of String, DataTable) In tableList
sortedDataset.Tables.Add(tableItem.Value.Clone())
Next
Return SortedDataset
End Function
Update
For adding DataTable Values
Function OrderDatatables(ByVal ds As DataSet) As DataSet
Dim tableList As New SortedList(Of String, DataTable)
Dim sortedDataset As New DataSet
For Each table As DataTable In ds.Tables
tableList.Add(table.TableName, table)
Next
For Each tableItem As KeyValuePair(Of String, DataTable) In tableList
sortedDataset.Tables.Add(ds.Tables(tableItem.Value.Clone().ToString()).Copy())
Next
Return SortedDataset
End Function