{TOC}
| Namespace: | System.Linq |
| Assembly: | System.Core.dll |
| Extends: | IEnumerable<T> |
Back to
Standard Query Operator IndexEditIntroduction
The SkipWhile operator skips elements from a sequence while a test is true and then yields the remainder of the sequence.
EditMethod Signatures
// 1 - Skip elements while a predicate passes, then return all the remaining elements.
public static IEnumerable<TSource> SkipWhile<TSource>(
this IEnumerable<TSource> source,
Func<TSource, bool> predicate)
// 2 - Skip elements while a predicate passes, then return all the remaining elements.
// Also provides index position as an argument for use in the predicate function.
public static IEnumerable<TSource> SkipWhile<TSource>(
this IEnumerable<TSource> source,
Func<TSource, int, bool> predicate)EditException
Throws an ArgumentNullException if
source or
predicate is null.
EditPseudo-code
Overload 1
If
source is null, throw an ArgumentNullException.
If
predicate is null, throw an ArgumentNullException.
Initialize a flag indicating whether the predicate has been passed to false. (call it yielding)
Iterate the
source sequence.
If the yielding flag is false.
If predicate(current element) returns false.
set yielding flag to true.
Else (flag is true, an element has failed the predicate).
Return the current element. Resume execution from this point when the next element is requested.
Overload 2
If
source is null, throw an ArgumentNullException.
If
predicate is null, throw an ArgumentNullException.
Initialize an index value to zero.
Initialize a flag indicating whether the predicate has been passed to false. (call it yielding)
Iterate the
source sequence.
If the yielding flag is false.
If predicate(current element, current index value) returns false.
set yielding flag to true.
Else (flag is true, an element has failed the predicate).
Return the current element. Resume execution from this point when the next element is requested.
Increment the index value count by one.
EditLoop Count
< 1. Initially, count number of records are enumerated over with no result returned. This operator implements the standard
deferred execution iterator pattern. This means, no looping will occur until the result is iterated over.
EditCode Samples
TODO: Needs code sample.