The following code can be used to retrieve sub DataTables
Dim parts As New DataTable()
parts.Columns.Add("PartNum", GetType(Integer), Nothing)
parts.Columns.Add("PartName", GetType(String), Nothing)
parts.Rows.Add(1, "OneTwo")
parts.Rows.Add(3, "ThreeOne")
parts.Rows.Add(1, "OneOne")
parts.Rows.Add(2, "TwoOne")
parts.Rows.Add(3, "ThreeTwo")
parts.Rows.Add(2, "TwoTwo")
parts.Rows.Add(1, "OneThree")
parts.DefaultView.Sort = "PartNum"
Dim distinctParts As DataTable = parts.DefaultView.ToTable("DistinctParts", True, New String() {"PartNum"})
distinctParts.Dump()
Dim SubTables As New List(Of DataTable)()
For Each row As DataRow In distinctParts.Rows
parts.DefaultView.RowFilter = String.Format("PartNum={0}", row("PartNum"))
SubTables.Add(parts.DefaultView.ToTable(String.Format("Table{0}", row("PartNum"))))
Next
Dim subTables As List(Of DataTable) = parts.AsEnumerable().GroupBy( _
Function(p) p.Field(Of Integer)("PartNum")) _
.[Select](Function(p) p.CopyToDataTable()).ToList()