首先,我是.NET开发人员和LOVE LINQ以及C#中的扩展方法。 但是当我编写脚本时,我需要等同于Enumerable extension methods
的东西任何人都可以在Powershell中给我任何建议/解释如何在这种情况下工作的最佳实践。例如,假设我想从数组中获取max元素:
$arr = @(2, 1, 3)
$max = $arr.MAX() #?? what should i do in this case?
答案 0 :(得分:27)
使用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等。
答案 1 :(得分:10)
Keith正确地提到了一些LINQ扩展方法的PowerShell等价物。请注意,您可以从PowerShell调用大多数扩展方法,您无法像调用成员一样调用它们。
扩展方法实际上只是静态方法,在C#中有一些额外的规则,允许像成员一样调用它们。
PowerShell没有实现任何这些规则,但这并不能阻止您将它们称为静态方法,例如。
[System.Linq.Enumerable]::Average([int[]](1..10))
答案 2 :(得分:0)
$ arr | foreach {if($ max -lt $ _){$ max = $ _}}; $ max