首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为在powershell中创建的类定义默认排序顺序?

问如何为在powershell中创建的类定义默认排序顺序?
EN

Stack Overflow用户
提问于 2020-04-30 16:35:04
回答 1查看 262关注 0票数 0

我创建了一个小型的powershell类。

代码语言:javascript
复制
Class StatSummary {
    [String] $name
    [int] $errors = 0
}

当我拥有这个类的实例集合时,我希望它们默认按$name的升序(或降序)排序。我在关于排序对象的文档中找到了对默认排序属性的引用,但找不到如何使用我自己的类来实现它的示例。当然,通过将属性名传递给排序对象,可以使集合进行不同的排序,但是我也想定义一个默认的。任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-30 16:46:13

实现System.IComparable interface -它只需要一个方法,CompareTo()

代码语言:javascript
复制
Class StatSummary : IComparable {
    [String] $name
    [int] $errors = 0

    [int]
    CompareTo([object]$other)
    {
        return $this.name.CompareTo($other.name)
    }
}

在上面的示例中,我们简单地比较了name属性:

代码语言:javascript
复制
PS C:\> 'Zoe', 'Andrew', 'Kate' |ForEach-Object {
>>   [StatSummary]@{ name = $_ }
>> } |Sort-Object |Select -Expand name
Andrew
Kate
Zoe

但是你可以做你想做的任何事情,比如在name上排序,然后减少errors的数量。

代码语言:javascript
复制
[int]
CompareTo([object]$other)
{
    $n = $this.name.CompareTo($other.name)
    if($n -eq 0){
        return -$this.errors.CompareTo($other.errors)
    }

    return $n
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61528344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档