28") # DataRow[] を DataTable に変換(CopyToDataTableを使用) if ($selectedRows.Count -gt 0) { # 結果をテーブル形式で表示 $selectedRows | Format-Table -AutoSize } else { Write-Host "条件に合致する行がありません。" } # 後処理:テーブルと検索結果を解放 $selectedTable = $null $selectedRows = $null $table = $null $row = $null # ガベージコレクションを強制的に実行 [System.GC]::Collect() [System.GC]::WaitForPendingFinalizers()"> 28") # DataRow[] を DataTable に変換(CopyToDataTableを使用) if ($selectedRows.Count -gt 0) { # 結果をテーブル形式で表示 $selectedRows | Format-Table -AutoSize } else { Write-Host "条件に合致する行がありません。" } # 後処理:テーブルと検索結果を解放 $selectedTable = $null $selectedRows = $null $table = $null $row = $null # ガベージコレクションを強制的に実行 [System.GC]::Collect() [System.GC]::WaitForPendingFinalizers()"> 28") # DataRow[] を DataTable に変換(CopyToDataTableを使用) if ($selectedRows.Count -gt 0) { # 結果をテーブル形式で表示 $selectedRows | Format-Table -AutoSize } else { Write-Host "条件に合致する行がありません。" } # 後処理:テーブルと検索結果を解放 $selectedTable = $null $selectedRows = $null $table = $null $row = $null # ガベージコレクションを強制的に実行 [System.GC]::Collect() [System.GC]::WaitForPendingFinalizers()">
# DataTableオブジェクトを作成
$table = New-Object System.Data.DataTable

# 列を追加
$table.Columns.Add("ID", [int])
$table.Columns.Add("Name", [string])
$table.Columns.Add("Age", [int])

# 行を追加
$row = $table.NewRow()
$row["ID"] = 1
$row["Name"] = "Alice"
$row["Age"] = 30
$table.Rows.Add($row)

$row = $table.NewRow()
$row["ID"] = 2
$row["Name"] = "Bob"
$row["Age"] = 25
$table.Rows.Add($row)

$row = $table.NewRow()
$row["ID"] = 3
$row["Name"] = "Charlie"
$row["Age"] = 35
$table.Rows.Add($row)

# Selectメソッドを使用して条件に合う行を取得
$selectedRows = $table.Select("Age > 28")

# DataRow[] を DataTable に変換(CopyToDataTableを使用)
if ($selectedRows.Count -gt 0) {
    # 結果をテーブル形式で表示
    $selectedRows | Format-Table -AutoSize
} else {
    Write-Host "条件に合致する行がありません。"
}

# 後処理:テーブルと検索結果を解放
$selectedTable = $null
$selectedRows = $null
$table = $null
$row = $null

# ガベージコレクションを強制的に実行
[System.GC]::Collect()
[System.GC]::WaitForPendingFinalizers()

説明:

注意事項:

実行結果:

ID Name     Age
-- ----     ---
 1 Alice     30
 3 Charlie   35

このスクリプトは、ループを使用せずにDataTableから条件に合うデータを選択し、テーブル形式で出力しています。

行をループで作成、linqの計算追加

行の追加を foreach ループで行い、年齢を乱数に設定し、名前を "name_ID番号" とするようにスクリプトを修正します。また、検索方法に LINQ を使用した場合も追加します。

# DataTableオブジェクトを作成
$table = New-Object System.Data.DataTable

# 列を追加
$table.Columns.Add("ID", [int])
$table.Columns.Add("Name", [string])
$table.Columns.Add("Age", [int])

# 乱数を生成するためのRandomオブジェクトを作成
$random = New-Object System.Random

# 行を追加(IDが1から10まで)
foreach ($id in 1..10) {
    $row = $table.NewRow()
    $row["ID"] = $id
    $row["Name"] = "name_$id"
    $row["Age"] = $random.Next(20, 50) # 20から49の乱数
    [void]$table.Rows.Add($row)
}

# DataTableの内容を表示
Write-Host "=== 生成されたデータテーブル ==="
$table | Format-Table -AutoSize

# LINQを使用してAgeが30以上の行を選択
Add-Type -AssemblyName 'System.Data.DataSetExtensions'
$selectedRows = [System.Data.DataTableExtensions]::AsEnumerable($table) | Where-Object { $_['Age'] -ge 30 }

# DataRow[] を DataTable に変換(CopyToDataTableを使用)
if ($selectedRows.Count -gt 0) {

    # 結果をテーブル形式で表示
    Write-Host "`n=== LINQを使用した検索結果(Age >= 30) ==="
    $selectedRows | Format-Table -AutoSize
} else {
    Write-Host "条件に合致する行がありません。"
}

# 後処理:テーブルと検索結果を解放
$selectedTable = $null
$selectedRows = $null
$table = $null
$row = $null
$random = $null

# ガベージコレクションを強制的に実行
[System.GC]::Collect()
[System.GC]::WaitForPendingFinalizers()

説明:

  1. 行の追加を foreach で行う:
  2. DataTable の内容を表示: