Enumerable.SkipWhile Enumerable.SkipWhile Enumerable.SkipWhile Enumerable.SkipWhile Method

定義

指定された条件が満たされる限り、シーケンスの要素をバイパスした後、残りの要素を返します。Bypasses elements in a sequence as long as a specified condition is true and then returns the remaining elements.

オーバーロード

SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)

指定された条件が満たされる限り、シーケンスの要素をバイパスした後、残りの要素を返します。Bypasses elements in a sequence as long as a specified condition is true and then returns the remaining elements.

SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>)

指定された条件が満たされる限り、シーケンスの要素をバイパスした後、残りの要素を返します。Bypasses elements in a sequence as long as a specified condition is true and then returns the remaining elements. 要素のインデックスは、述語関数のロジックで使用されます。The element's index is used in the logic of the predicate function.

SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)

指定された条件が満たされる限り、シーケンスの要素をバイパスした後、残りの要素を返します。Bypasses elements in a sequence as long as a specified condition is true and then returns the remaining elements.

public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
 static System::Collections::Generic::IEnumerable<TSource> ^ SkipWhile(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, bool> ^ predicate);
public static System.Collections.Generic.IEnumerable<TSource> SkipWhile<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,bool> predicate);
static member SkipWhile : seq<'Source> * Func<'Source, bool> -> seq<'Source>
<Extension()>
Public Function SkipWhile(Of TSource) (source As IEnumerable(Of TSource), predicate As Func(Of TSource, Boolean)) As IEnumerable(Of TSource)

型パラメーター

TSource

source の要素の型。The type of the elements of source.

パラメーター

source
IEnumerable<TSource>

返される要素が含まれる IEnumerable<T>An IEnumerable<T> to return elements from.

predicate
Func<TSource,Boolean>

各要素が条件を満たしているかどうかをテストする関数。A function to test each element for a condition.

戻り値

IEnumerable<TSource>

predicate で指定されたテストに合格しない連続する最初の要素から入力シーケンスの要素を含む IEnumerable<T>An IEnumerable<T> that contains the elements from the input sequence starting at the first element in the linear series that does not pass the test specified by predicate.

例外

source または predicatenull です。source or predicate is null.

次のコード例は、使用する方法を示しますSkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)条件が true であれば、配列の要素をスキップします。The following code example demonstrates how to use SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) to skip elements of an array as long as a condition is true.

int[] grades = { 59, 82, 70, 56, 92, 98, 85 };

IEnumerable<int> lowerGrades =
    grades
    .OrderByDescending(grade => grade)
    .SkipWhile(grade => grade >= 80);

Console.WriteLine("All grades below 80:");
foreach (int grade in lowerGrades)
{
    Console.WriteLine(grade);
}

/*
 This code produces the following output:

 All grades below 80:
 70
 59
 56
*/
' Create an array of integers that represent grades.
Dim grades() As Integer = {59, 82, 70, 56, 92, 98, 85}

' Sort the grades in descending order and
' get all grades greater less than 80.
Dim lowerGrades As IEnumerable(Of Integer) =
grades _
.OrderByDescending(Function(grade) grade) _
.SkipWhile(Function(grade) grade >= 80)

' Display the results.
Dim output As New System.Text.StringBuilder("All grades below 80:" & vbCrLf)
For Each grade As Integer In lowerGrades
    output.AppendLine(grade)
Next
MsgBox(output.ToString())

' This code produces the following output:
'
' All grades below 80:
' 70
' 59
' 56

注釈

SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)メソッドは、遅延実行を使用して実装されます。The SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) method is implemented by using deferred execution. 即時の戻り値は、操作を実行するために必要なすべての情報を格納するオブジェクトです。The immediate return value is an object that stores all the information that is required to perform the action. か、呼び出すことによって、オブジェクトが列挙されるまで、このメソッドによって表されるクエリは実行されません、GetEnumeratorメソッドを使用して直接またはforeachVisual C# またはFor EachVisual Basic で。The query represented by this method is not executed until the object is enumerated either by calling its GetEnumerator method directly or by using foreach in Visual C# or For Each in Visual Basic.

このメソッドの各要素はテストsourceを使用してpredicateし、結果の場合、要素をスキップtrueします。This method tests each element of source by using predicate and skips the element if the result is true. 述語の関数から制御が戻た後false要素、その要素との残りの要素のsource見つかったのない複数の呼び出しがあるとpredicateします。After the predicate function returns false for an element, that element and the remaining elements in source are yielded and there are no more invocations of predicate.

場合predicate返しますtrueシーケンス、空のすべての要素のIEnumerable<T>が返されます。If predicate returns true for all elements in the sequence, an empty IEnumerable<T> is returned.

TakeWhileSkipWhileメソッドは、機能を補完します。The TakeWhile and SkipWhile methods are functional complements. シーケンスの指定collと純粋関数pの結果を連結coll.TakeWhile(p)coll.SkipWhile(p)と同じシーケンスを生成collGiven a sequence coll and a pure function p, concatenating the results of coll.TakeWhile(p) and coll.SkipWhile(p) yields the same sequence as coll.

Visual Basic のクエリ式の構文をSkip While句がの呼び出しに変換されますSkipWhileします。In Visual Basic query expression syntax, a Skip While clause translates to an invocation of SkipWhile.

こちらもご覧ください

SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>)

指定された条件が満たされる限り、シーケンスの要素をバイパスした後、残りの要素を返します。Bypasses elements in a sequence as long as a specified condition is true and then returns the remaining elements. 要素のインデックスは、述語関数のロジックで使用されます。The element's index is used in the logic of the predicate function.

public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
 static System::Collections::Generic::IEnumerable<TSource> ^ SkipWhile(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, int, bool> ^ predicate);
public static System.Collections.Generic.IEnumerable<TSource> SkipWhile<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,int,bool> predicate);
static member SkipWhile : seq<'Source> * Func<'Source, int, bool> -> seq<'Source>
<Extension()>
Public Function SkipWhile(Of TSource) (source As IEnumerable(Of TSource), predicate As Func(Of TSource, Integer, Boolean)) As IEnumerable(Of TSource)

型パラメーター

TSource

source の要素の型。The type of the elements of source.

パラメーター

source
IEnumerable<TSource>

返される要素が含まれる IEnumerable<T>An IEnumerable<T> to return elements from.

predicate
Func<TSource,Int32,Boolean>

各ソース要素が条件に当てはまるかどうかをテストする関数。この関数の 2 つ目のパラメーターは、ソース要素のインデックスを表します。A function to test each source element for a condition; the second parameter of the function represents the index of the source element.

戻り値

IEnumerable<TSource>

predicate で指定されたテストに合格しない連続する最初の要素から入力シーケンスの要素を含む IEnumerable<T>An IEnumerable<T> that contains the elements from the input sequence starting at the first element in the linear series that does not pass the test specified by predicate.

例外

source または predicatenull です。source or predicate is null.

次のコード例は、使用する方法を示しますSkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>)要素のインデックスに依存している条件が true であれば、配列の要素をスキップします。The following code example demonstrates how to use SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) to skip elements of an array as long as a condition that depends on the element's index is true.

int[] amounts = { 5000, 2500, 9000, 8000, 
                    6500, 4000, 1500, 5500 };

IEnumerable<int> query =
    amounts.SkipWhile((amount, index) => amount > index * 1000);

foreach (int amount in query)
{
    Console.WriteLine(amount);
}

/*
 This code produces the following output:

 4000
 1500
 5500
*/
' Create an array of integers.
Dim amounts() As Integer =
{5000, 2500, 9000, 8000, 6500, 4000, 1500, 5500}

' Skip items in the array whose value is greater than
' the item's index times 1000; get the remaining items.
Dim query As IEnumerable(Of Integer) =
amounts.SkipWhile(Function(amount, index) _
                      amount > index * 1000)

' Output the results.
Dim output As New System.Text.StringBuilder
For Each amount As Integer In query
    output.AppendLine(amount)
Next
MsgBox(output.ToString())

' This code produces the following output:
'
' 4000
' 1500
' 5500

注釈

このメソッドは、遅延実行を使用して実装されます。This method is implemented by using deferred execution. 即時の戻り値は、操作を実行するために必要なすべての情報を格納するオブジェクトです。The immediate return value is an object that stores all the information that is required to perform the action. か、呼び出すことによって、オブジェクトが列挙されるまで、このメソッドによって表されるクエリは実行されません、GetEnumeratorメソッドを使用して直接またはforeachVisual C# またはFor EachVisual Basic で。The query represented by this method is not executed until the object is enumerated either by calling its GetEnumerator method directly or by using foreach in Visual C# or For Each in Visual Basic.

SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>)メソッドの各要素はテストsourceを使用してpredicateし、結果の場合、要素をスキップtrueします。The SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) method tests each element of source by using predicate and skips the element if the result is true. 述語の関数から制御が戻た後false要素、その要素との残りの要素のsource見つかったのない複数の呼び出しがあるとpredicateします。After the predicate function returns false for an element, that element and the remaining elements in source are yielded and there are no more invocations of predicate.

場合predicate返しますtrueシーケンス、空のすべての要素のIEnumerable<T>が返されます。If predicate returns true for all elements in the sequence, an empty IEnumerable<T> is returned.

最初の引数predicateをテストする要素を表します。The first argument of predicate represents the element to test. 2 番目の引数内の要素の 0 から始まるインデックスを表すsourceします。The second argument represents the zero-based index of the element within source.

TakeWhileSkipWhileメソッドは、機能を補完します。The TakeWhile and SkipWhile methods are functional complements. シーケンスの指定collと純粋関数pの結果を連結coll.TakeWhile(p)coll.SkipWhile(p)と同じシーケンスを生成collGiven a sequence coll and a pure function p, concatenating the results of coll.TakeWhile(p) and coll.SkipWhile(p) yields the same sequence as coll.

Visual Basic のクエリ式の構文をSkip While句がの呼び出しに変換されますSkipWhileします。In Visual Basic query expression syntax, a Skip While clause translates to an invocation of SkipWhile.

こちらもご覧ください

適用対象