Powershell 具有某些属性的最小/最大值的自定义对象数组元素

Powershell 具有某些属性的最小/最大值的自定义对象数组元素,powershell,Powershell,找到最小值/最大值是否有更有趣的选项?我们可以列出一长串有效的PowerShell语句,这些语句看起来略有不同,并且会产生相同的结果,但基本上有两种方法: 分类 计数 通过排序获得最小值/最大值听起来就是这样的: $CustomObjects = Get-Random -Count 7 -InputObject @(0..300) | ForEach-Object {$i = 0} { [PSCustomObject]@{ id = ($i++) va

找到最小值/最大值是否有更有趣的选项?

我们可以列出一长串有效的PowerShell语句,这些语句看起来略有不同,并且会产生相同的结果,但基本上有两种方法:

  • 分类
  • 计数
通过排序获得最小值/最大值听起来就是这样的:

$CustomObjects = Get-Random -Count 7 -InputObject @(0..300) | ForEach-Object {$i = 0} {
    [PSCustomObject]@{
        id = ($i++)
        value = $_
    }
}

$min, $max = & {$Args[0].Minimum, $Args[0].Maximum} ($CustomObjects | ForEach-Object value | Measure-Object -Minimum -Maximum)

$CustomObjects | Format-Table id, value -RepeatHeader
$CustomObjects | Where-Object {$_.value -eq $min} | Format-Table id, value 
$CustomObjects | Where-Object {$_.value -eq $max} | Format-Table id, value
非常简洁,易于表达-但在大型集合中可能会变得很慢

通过保持计数获得最小/最大值正是
测量对象所做的:

$min,$max = @($CustomObjects |Sort Value)[0,-1].Value
# or 
$min,$max = @($CustomObjects.Value |Sort)[0,-1]

不是幻想,但对于大集合

更快,这完全取决于你认为什么“有趣”:“你可以解释”有趣的“你喜欢多少”,“你可以解释”有趣的“相当自由”,我不知道如何最好地把它翻译成英语,谢谢你,我一直忘了排序方法。
$min,$max = [int]::MaxValue,[int]::MinValue
$CustomObjects |ForEach-Object {
  $min = [Math]::Min($_.Value, $min)
  $max = [Math]::Max($_.Value, $max)
}