【发布时间】:2023-03-27 19:47:01
【问题描述】:
我在尝试获取哈希表的哈希表进行排序时遇到了困难。似乎排序的行为是将哈希表变成了别的东西,我无法走新结构。
$mainHashTable = @{}
$mainHashTable.Add('B', @{'one'='B1'; 'two'='B2'; 'three'='B3'})
$mainHashTable.Add('D', @{'one'='D1'; 'two'='D2'; 'three'='D3'})
$mainHashTable.Add('A', @{'one'='A1'; 'two'='A2'; 'three'='A3'})
$mainHashTable.Add('C', @{'one'='C1'; 'two'='C2'; 'three'='C3'})
CLS
$mainHashTable
foreach ($hashtable in $mainHashTable.keys) {
foreach ($itemKey in $mainHashTable.$hashtable.keys) {
Write-Host "$itemKey $($mainHashTable.$hashtable.$itemKey)!"
}
}
Write-Host
$sortedHashTable = $mainHashTable.GetEnumerator() | sort-object -property name
$sortedHashTable
foreach ($hashtable_S in $sortedHashTable.keys) {
foreach ($itemKey_S in $sortedHashTable.$hashtable_S.keys) {
Write-Host "$itemKey_S $($sortedHashTable.$hashtable_S.$itemKey2)!"
}
}
将$mainHashTable 和$sortedHashTable 转储到控制台的两行看起来一切正常。但是第二个循环组什么也不做。我试过这样投射
$sortedHashTable = [hashtable]($mainHashTable.GetEnumerator() | sort-object -property name)
这只会引发错误
无法转换“System.Object[]”类型的“System.Object[]”值 键入“System.Collections.Hashtable”。
那么,有没有办法将系统对象转换为哈希表,以便循环结构对排序结果起作用?还是我最好学习走 System.Object 的结构?而且(也许在学术上),有没有办法对哈希表进行排序并取回哈希表?
【问题讨论】:
标签: powershell sorting hashtable