【问题标题】:Powershell Sorting a tuple not workingPowershell对元组进行排序不起作用
【发布时间】:2018-11-27 19:24:55
【问题描述】:

这是我正在尝试和失败的最精简示例:

@(1, 3, 2) | Select-Object {New-Object "tuple[Int,Int]" $_, 1} | Sort-Object -Property Item1

返回:

(2, 1)
(3, 1)
(1, 1)

我希望返回按元组的第一个元素排序的列表。显然,在这个小演示中,我可以先进行排序,但在我的实际用例中,我在 Select-Object 阶段对列表执行计算,然后希望根据计算结果进行排序。

我当然不喜欢使用元组,但我尝试过使用其他没有成功的选项,但都失败了。我只需要获取一个列表,根据计算结果为列表的每个元素添加附加信息,然后按附加信息排序。

考虑到这需要我多长时间才能弄清楚,所以现在感觉真的很愚蠢,因此感谢任何帮助。

【问题讨论】:

    标签: sorting powershell tuples


    【解决方案1】:

    如果您只是向对象添加自定义属性,请尝试返回具有附加属性的新对象。要使用与@(1,3,2) 相同的示例:

    @(1, 3, 2) | % {
       [PSCustomObject] @{
          Item1 = $_
          Item2 = 1
       }
    } | Sort-Object -Property Item1
    

    【讨论】:

      【解决方案2】:

      只有先将元组添加到列表中,才能对元组进行排序。 排序顺序总是从第一项到最后一项升序:

      $list = New-Object 'Collections.ArrayList'
      foreach ($x in 1, 3, 2) {$null = $list.add([tuple]::create($x, 1))}
      $list.Sort()
      $list | select item1, item2
      

      【讨论】:

        猜你喜欢
        • 2021-12-29
        • 1970-01-01
        • 2021-09-03
        • 1970-01-01
        • 2021-02-25
        • 2021-10-28
        • 2012-07-19
        • 2018-12-17
        • 2019-12-20
        相关资源
        最近更新 更多