首先,我是 .NET 开发人员,喜欢 C# 中的 LINQ 和扩展方法。但是当我编写脚本时,我需要类似于Enumerable 扩展方法的东西
任何人都可以给我任何建议/解释有关如何在 Powershell 中的这种情况下工作的最佳实践。例如,假设我想从数组中获取最大元素:
$arr = @(2, 1, 3)
$max = $arr.MAX() #?? what should i do in this case?
首先,我是 .NET 开发人员,喜欢 C# 中的 LINQ 和扩展方法。但是当我编写脚本时,我需要类似于Enumerable 扩展方法的东西
任何人都可以给我任何建议/解释有关如何在 Powershell 中的这种情况下工作的最佳实践。例如,假设我想从数组中获取最大元素:
$arr = @(2, 1, 3)
$max = $arr.MAX() #?? what should i do in this case?
使用Measure-Object
命令:
C:\PS> 2,1,3 | Measure-Object -Maximum
Count : 3
Average :
Sum :
Maximum : 3
Minimum :
Property :
或仅获得最大值:
C:\PS> (2,1,3 | Measure -Max).Maximum
从上面可以看到,还有可用的最小值、平均值和总和。但是您必须告诉 PowerShell 计算带有 Measure-Object 参数的参数,例如 -Sum -Average 等。
Keith 正确地提到了某些 LINQ 扩展方法的 PowerShell 等效项。请注意,您可以从 PowerShell 调用大多数扩展方法,只是不能像成员一样调用它们。
扩展方法实际上只是静态方法,在 C# 中有一些额外的规则,允许它们像成员一样被调用。
PowerShell 没有实现任何这些规则,但这并不能阻止您将它们作为静态方法调用,例如
[System.Linq.Enumerable]::Average([int[]](1..10))
$arr | foreach { if($max -lt $_ ) {$max = $_ }};$max