したがって、私のシナリオを捨てた後、並べ替えが実際には安定していないことを示す簡単なテストを見つけましたが、どういうわけか安定した方法でシーケンスを逆にします。私が使用しているテスト セットは非常に小さいため、これらの結果は決定的ではない可能性がありますが、再現可能であることに注意してください。
function f ([String] $name, [int] $value) `
{
return New-Object PSObject -Property @{ Name=$name; Value=$value } |
select Name,Value;
};
$test = (f a 1),(f a 2),(f a 3),(f b 1),(f b 2);
"`n`$test;"
$test;
"`n`$test | sort name;"
$test | sort name;
"`n`$test | sort name -Desc;"
$test | sort name -Desc;
"`n`$test | sort name | sort name;"
$test | sort name | sort name;
"`n`$test | sort value | sort name;"
$test | sort value | sort name;
"`n`$test | sort value;"
$test | sort value;
結果は次のとおりです。
$test;
Name Value
---- -----
a 1
a 2
a 3
b 1
b 2
$test | sort name;
a 3
a 2
a 1
b 2
b 1
$test | sort name -Desc;
b 1
b 2
a 1
a 2
a 3
$test | sort name | sort name;
a 1
a 2
a 3
b 1
b 2
$test | sort value | sort name;
a 2
a 1
a 3
b 1
b 2
$test | sort value;
b 1
a 1
b 2
a 2
a 3
https://connect.microsoft.com/PowerShell/feedback/details/752455/provide-stable-switch-for-sort-object-cmdletで、これに関する PS チームに提案を提出しました。同意する場合は、賛成票を投じてください。