Реализация интерфейса System.IComparable
- для этого требуется только один метод, CompareTo()
:
Class StatSummary : IComparable {
[String] $name
[int] $errors = 0
[int]
CompareTo([object]$other)
{
return $this.name.CompareTo($other.name)
}
}
В приведенном выше примере мы просто сравниваем свойство name
:
PS C:\> 'Zoe', 'Andrew', 'Kate' |ForEach-Object {
>> [StatSummary]@{ name = $_ }
>> } |Sort-Object |Select -Expand name
Andrew
Kate
Zoe
Но вы можете делать все, что вам нужно, например, сортировку по name
, а затем по убыванию числа errors
:
[int]
CompareTo([object]$other)
{
$n = $this.name.CompareTo($other.name)
if($n -eq 0){
return -$this.errors.CompareTo($other.errors)
}
return $n
}