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