Tôi gặp sự cố khi sắp xếp bảng băm. Tôi đã chia mã của mình thành những thứ cần thiết để không bị áp đảo bất cứ ai với kịch bản gốc của tôi.Sắp xếp bảng băm PowerShell trên thuộc tính giá trị
Write-Host "PowerShell Version = " ([string]$psversiontable.psversion)
$h = @{}
$Value = @{SortOrder=1;v1=1;}
$h.Add(1, $Value)
$Value = @{SortOrder=2;v1=1;}
$h.Add(2, $Value)
$Value = @{SortOrder=3;v1=1;}
$h.Add(3, $Value)
$Value = @{SortOrder=4;v1=1;}
$h.Add(4, $Value)
Write-Host "Ascending"
foreach($f in $h.GetEnumerator() | Sort-Object Value.SortOrder)
{
Write-Host $f.Value.SortOrder
}
Write-Host "Descending"
foreach($f in $h.GetEnumerator() | Sort-Object Value.SortOrder -descending)
{
Write-Host $f.Value.SortOrder
}
Đầu ra là
PowerShell Version = 3.0
Ascending
2
1
4
3
Descending
2
1
4
3
Tôi chắc chắn đây chỉ là một trường hợp đơn giản vì không biết sử dụng chính xác Sort-Object
. Các loại hoạt động chính xác trên Sort-Object Name
vì vậy có lẽ nó có cái gì để làm với không biết làm thế nào để xử lý các Value.SortOrder
?
Tôi đã cập nhật câu hỏi của mình để sử dụng mã bạn đã đề cập nhưng tôi vẫn nhận được cùng một đầu ra. –
nevermind có vẻ như tôi đã bỏ lỡ khoảng thời gian này. Tôi sẽ chỉnh sửa lại câu hỏi về bản gốc. –
btw đây có thể là câu hỏi riêng biệt nhưng có cách dễ dàng để> = 2 hoặc một số bộ lọc khác. –