MoreEnumerableSkipUntilTSource Method

Skips items from the input sequence until the given predicate returns true when applied to the current source item; that item will be the last skipped.

Definition

Namespace: MoreLinq
Assembly: MoreLinq (in MoreLinq.dll) Version: 3.4.0+b99a6a8cc504caf2d48372fe54a2f8116c59cd0c
C#
public static IEnumerable<TSource> SkipUntil<TSource>(
	this IEnumerable<TSource> source,
	Func<TSource, bool> predicate
)

Parameters

source  IEnumerableTSource
Source sequence
predicate  FuncTSource, Boolean
Predicate used to determine when to stop yielding results from the source.

Type Parameters

TSource
Type of the source sequence

Return Value

IEnumerableTSource
Items from the source sequence after the predicate first returns true when applied to the item.

Usage Note

In Visual Basic and C#, you can call this method as an instance method on any object of type IEnumerableTSource. When you use instance method syntax to call this method, omit the first parameter. For more information, see Extension Methods (Visual Basic) or Extension Methods (C# Programming Guide).

Remarks

SkipUntil differs from Enumerable.SkipWhile in two respects. Firstly, the sense of the predicate is reversed: it is expected that the predicate will return false to start with, and then return true - for example, when trying to find a matching item in a sequence.

Secondly, SkipUntil skips the element which causes the predicate to return true. For example, in a sequence

C#
{ 1, 2, 3, 4, 5 }
and with a predicate of
C#
x => x == 3
, the result would be
C#
{ 4, 5 }
.

SkipUntil is as lazy as possible: it will not iterate over the source sequence until it has to, it won't iterate further than it has to, and it won't evaluate the predicate until it has to. (This means that an item may be returned which would actually cause the predicate to throw an exception if it were evaluated, so long as it comes after the first item causing the predicate to return true.)

Exceptions

ArgumentNullExceptionsource or predicate is null

See Also