# Import the System.Data assembly
Add-Type -AssemblyName System.Data

# 親データのDataTableを作成する
$parentTable = New-Object System.Data.DataTable
$parentTable.Columns.Add("ParentID", [System.Int32]) | Out-Null
$parentTable.Columns.Add("ParentName", [System.String]) | Out-Null

# 親のDataTableにデータを追加する
$parentTable.Rows.Add(1, "Parent 1")
$parentTable.Rows.Add(2, "Parent 2")
$parentTable.Rows.Add(3, "Parent 3")

# 子データ用のDataTableを作成する
$childTable = New-Object System.Data.DataTable
$childTable.Columns.Add("ChildID", [System.Int32]) | Out-Null
$childTable.Columns.Add("ChildName", [System.String]) | Out-Null
$childTable.Columns.Add("ParentID", [System.Int32]) | Out-Null

# 子のDataTableにデータを追加する
$childTable.Rows.Add(1, "Child 1", 1)
$childTable.Rows.Add(2, "Child 2", 1)
$childTable.Rows.Add(3, "Child 3", 2)
$childTable.Rows.Add(4, "Child 4", 2)
$childTable.Rows.Add(5, "Child 5", 3)

# 親と子のDataTablesの間にDataRelationを作成する
$relation = New-Object System.Data.DataRelation("ParentChild", $parentTable.Columns["ParentID"], $childTable.Columns["ParentID"])

# 親であるDataTableにDataRelationを追加する
$parentTable.ChildRelations.Add($relation)

# 特定の親に対応する子行を取得する
$parentRows = $parentTable.Select("ParentID = 1")
$childRows = $parentRows[0].GetChildRows($relation)

# 親の子データを表示する
Write-Host "Child data for Parent 1:"
foreach ($childRow in $childRows)
{
    Write-Host "ChildID: $($childRow["ChildID"]), ChildName: $($childRow["ChildName"])"
}
# Import the System.Data assembly
Add-Type -AssemblyName System.Data

# 親データのDataTableを作成する
$親テーブル = New-Object System.Data.DataTable
$親テーブル.Columns.Add("親ID", [System.Int32]) | Out-Null
$親テーブル.Columns.Add("親名", [System.String]) | Out-Null

# 親のDataTableにデータを追加する
$親テーブル.Rows.Add(1, "親_1")
$親テーブル.Rows.Add(2, "親_2")
$親テーブル.Rows.Add(3, "親_3")

# 子データ用のDataTableを作成する
$子テーブル = New-Object System.Data.DataTable
$子テーブル.Columns.Add("子ID", [System.Int32]) | Out-Null
$子テーブル.Columns.Add("子名", [System.String]) | Out-Null
$子テーブル.Columns.Add("親ID", [System.Int32]) | Out-Null

# 子のDataTableにデータを追加する
$子テーブル.Rows.Add(1, "子_1", 1)
$子テーブル.Rows.Add(2, "子_2", 1)
$子テーブル.Rows.Add(3, "子_3", 2)
$子テーブル.Rows.Add(4, "子_4", 2)
$子テーブル.Rows.Add(5, "子_5", 3)

# DataSetを作成し、親テーブルと子テーブルを追加する
$dataSet = New-Object System.Data.DataSet
$dataSet.Tables.Add($親テーブル)
$dataSet.Tables.Add($子テーブル)

# 親と子のDataTablesの間にDataリレーションを作成する
$リレーション = New-Object System.Data.DataRelation("親子", $親テーブル.Columns["親ID"], $子テーブル.Columns["親ID"])

# 親であるDataTableにDataリレーションを追加する
$親テーブル.ChildRelations.Add($リレーション)

# 特定の親に対応する子行を取得する
$親行s = $親テーブル.Select("親ID = 1")
$子行s = $親行s[0].GetChildRows($リレーション)

# 親の子データを表示する
Write-Host "親_1の子データ:"
foreach ($子行 in $子行s)
{
    Write-Host "子ID: $($子行["子ID"]), 子名: $($子行["子名"])"
}