Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Next up in the PowerShell LINQ series is SkipWhile. This LINQ function takes an enumerable instance and a predicate. The function will skip the elements in the enumerable while the predicate is true. The argument to the predicate is the current value of the enumerable.
The LINQ version takes a predicate in the form of a Func<T,TResult>. The PowerShell equivalent of a delegate is a script block. Unlike a .Net delegate, there is no way to type the Skip-While function to accept a particular number or type of arguments. The contract with the caller will be implicit.
Other than the strict typing, the function will match the contract for the LINQ version of SkipWhile.
#============================================================================
# Skip while the condition is true
#============================================================================
function Skip-While() {
param ( [scriptblock]$pred = $(throw "Need a predicate") )
begin {
$skip = $true
}
process {
if ( $skip ) {
$skip = & $pred $_
}
if ( -not $skip ) {
$_
}
}
end {}
}
Example Usage:
PS) 1..10 | Skip-While { $args[0] -lt 6 }
6
7
8
9
10
PS)
Anonymous
January 29, 2009
PingBack from http://www.alvinashcraft.com/2009/01/29/dew-drop-january-29-2009/Anonymous
February 17, 2009
The comment has been removed