Powershell对元组进行排序不起作用

时间:2015-10-06 00:37:18

标签: sorting powershell tuples

这是我正在尝试和未能做的最简单的例子:

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

它返回:

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

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

我当然没有结婚使用元组,但我尝试过使用其他没有取得任何成功的选项。我只需要一个列表,根据计算结果向列表的每个元素添加其他信息,然后按其他信息排序。

现在感觉非常愚蠢,因为这需要多长时间才能弄明白所以任何帮助都会受到赞赏。

2 个答案:

答案 0 :(得分:2)

如果您只是向对象添加自定义属性,请尝试使用additional属性返回一个新对象。要将同一示例与@(1,3,2)

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

答案 1 :(得分:0)

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

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