The strongly typed DataSet
provides two methods
for each
DataRelation
,
TableName
Row( )
and
TableName
Rows( )
, to
facilitate navigating records in parent child relationships. These
methods are similar to the GetParentRow( )
and
GetChildRows( )
methods in the untyped
DataSet
. The
TableName
Row( )
method
is defined for the child table and retrieves the parent row for a
DataRow
. The
TableName
Rows( )
method
is defined for the parent table in a relationship and retrieves the
child rows for a DataRow
.
The strongly typed DataSet
methods encapsulate the
DataRelations
defined within the
DataSet
so a reference to the
DataRelation
or the name of the
DataRelation
isn’t required when
navigating the hierarchy of records. The following sample
demonstrates using the strongly typed DataSet
methods to navigate a hierarchy of records:
// strongly typed DataSet called Northwind containing Orders table and // OrderDetails table, related through the OrderID field Northwind ds = new Northwind(); // ... code to fill the Orders and Order Details tables in the DataSet foreach(Northwind.OrdersRow ordersRow in ds.Orders) { // iterate the collection of order details for the order through // the GetOrderDetailsRow accessor foreach(Northwind.Order_DetailsRow orderDetailsRow in ordersRow.GetOrder_DetailsRows()) { // get the CustomerID from the parent row, through the // OrdersRow property of the child row String customerId = orderDetailsRow.OrdersRow.CustomerID; // get the ProductID Int32 productId = orderDetailsRow.ProductID; } }
This example shows comparable code using an untyped
DataSet
:
// untyped DataSet containing Orders table and // OrderDetails table, related through the OrderID field DataSet ds = new DataSet(); // ... code to define or retrieve the schema for the Orders and // [Order Details] tables schemas including creating DataRelation objects // ... code to add new rows to the Orders and [Order Details] tables foreach(DataRow ordersRow in ds.Tables["Orders"].Rows) { foreach(DataRow orderDetailsRow in ordersRow.GetChildRows("Order_OrderDetails")) { // get the CustomerID from the parent row String customerId = orderDetailsRow.GetParentRow("Order_OrderDetails") ["CustomerID"].ToString(); // get the ProductID Int32 productId = (Int32)orderDetailsRow["ProductID"]; } }