我创建了一个小型的powershell类。
Class StatSummary {
[String] $name
[int] $errors = 0
}当我拥有这个类的实例集合时,我希望它们默认按$name的升序(或降序)排序。我在关于排序对象的文档中找到了对默认排序属性的引用,但找不到如何使用我自己的类来实现它的示例。当然,通过将属性名传递给排序对象,可以使集合进行不同的排序,但是我也想定义一个默认的。任何帮助都是非常感谢的。
发布于 2020-04-30 16:46:13
实现System.IComparable interface -它只需要一个方法,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
}https://stackoverflow.com/questions/61528344
复制相似问题