Mam problem z sortowaniem tabeli mieszania. Zepsułem swój kod do najpotrzebniejszych rzeczy, aby nie przytłoczyć nikogo moim oryginalnym scenariuszem.Sortowanie tabeli mieszania programu PowerShell dla właściwości o wartości
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
}
Wyjście jest
PowerShell Version = 3.0
Ascending
2
1
4
3
Descending
2
1
4
3
Jestem pewien, że jest to tylko prosty przypadek nie znając właściwego wykorzystania Sort-Object
. Sortowanie działa poprawnie na Sort-Object Name
, więc może ma to coś wspólnego z brakiem wiedzy o obsłudze Value.SortOrder
?
Zaktualizowałem moje pytanie, aby użyć kodu, o którym wspomniałeś, ale nadal otrzymuję ten sam wynik. –
nevermind wygląda na to, że przegapiłem okres. Ponownie edytuję pytanie z powrotem do oryginału. –
btw to może być oddzielne pytanie, ale czy istnieje łatwy sposób na> = 2 lub jakiś inny filtr. –