How to Retrieving Parent and Child DataTable Records
It's easy to retrieve data that capitalizes on relationship after establishing a parent-child relationship between two tables in a DataSet. The DataRow class includes two methods— GetChildRows and GetParentRow—that retrieve the relevant row(s) at the other end of a linked relationship. Because a column could be involved in multiple relationships, you must pass either the name or the instance of the relationship to the relevant method.
Following code sample shows working of GetParentRow method
Dim objDtOrder As DataTable = DataSet1.Tables("Order")
Dim objRelation As DataRelation = thisTable.ParentRelations(0)
Dim parentRow As DataRow
Dim row As DataRow
For Each row In objDtOrder.Rows
parentRow = row.GetParentRow(objRelation)
Console.Write(ControlChars.Tab & " child row: " _
& row(1).ToString())
Console.Write(ControlChars.Tab & " parent row: " _
& parentRow(1).ToString() & ControlChars.Cr)
Next row
Following code sample shows working of GetChildRows method
Dim myRelation As DataRelation
Dim arrRows() As DataRow
Dim myRow As DataRow
Dim i As Integer
Dim myColumn As DataColumn
For Each myRelation In myTable.ChildRelations
For Each myRow In myTable.Rows
arrRows = myRow.GetChildRows(myRelation)
For i = 0 To arrRows.GetUpperBound(0)
For Each myColumn In myTable.Columns
Console.WriteLine(arrRows(i)(myColumn))
Next myColumn
Next i
Next myRow
Next myRelation
The DataRow class also includes a method named GetParentRows that returns multiple parent rows for a single child record. This is useful for parent-child relationships that are linked on columns other than the parent's primary key.
Following code sample shows working of GetParentRows method
Dim objRelation As DataRelation
Dim arrRows() As DataRow
Dim objRow As DataRow
Dim i As Integer
Dim objColumn As DataColumn
For Each objRelation In objTable.ParentRelations
For Each objRow In objTable.Rows
arrRows = objRow.GetParentRows(objRelation)
' Print values of rows.
For i = 0 To arrRows.GetUpperBound(0)
For Each objColumn In objTable.Columns
Console.WriteLine(arrRows(i)(objColumn.ColumnName))
Next objColumn
Next i
Next objRow
Next objRelation

Join the conversation! Your thoughts help the community grow.