The Merge method of DataTable can be used for this purpose as shown below:
Private Sub Main()
Dim people As New DataTable()
people.Columns.Add("Id", GetType(Integer), Nothing)
people.Columns.Add("Name", GetType(String), Nothing)
people.PrimaryKey = New DataColumn() {people.Columns("Id")}
people.Rows.Add(91, "John")
people.Rows.Add(92, "Kim")
people.Rows.Add(93, "Edith")
Dim arrived As New DataTable()
arrived.Columns.Add("AutoNum", GetType(Integer), Nothing)
arrived.Columns.Add("Id", GetType(Integer), Nothing)
arrived.Columns.Add("ArrivalDate", GetType(DateTime), Nothing)
arrived.Columns.Add("StoreName", GetType(String), Nothing)
arrived.Rows.Add(1, 92, New DateTime(2012, 4, 16), "Bali")
arrived.Rows.Add(2, 92, New DateTime(2012, 4, 13), "Forever")
arrived.Rows.Add(3, 93, New DateTime(2012, 4, 15), "Forever")
Dim dataView As DataView = arrived.DefaultView
dataView.RowFilter = "ArrivalDate=#4/16/2012#"
Dim peopleArrived As DataTable = people.Copy()
peopleArrived.Merge(dataView.ToTable(), False, MissingSchemaAction.Add)
PrintTable(people,"People")
PrintTable(arrived,"Arrived")
PrintTable(peopleArrived,"People Arrived")
End Sub
Public Shared Sub PrintTable(table As DataTable, title as String)
Console.WriteLine("--------------{0}------------",title)
For Each row As DataRow In table.Rows
For Each col As DataColumn In table.Columns
Console.Write("{0,-15}", row(col.ColumnName).ToString())
Next
Console.WriteLine()
Next
End Sub