Enumerable.SkipWhile メソッド

定義

指定された条件が満たされる限り、シーケンスの要素をバイパスした後、残りの要素を返します。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>)

指定された条件が満たされる限り、シーケンスの要素をバイパスした後、残りの要素を返します。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>)

指定された条件が満たされる限り、シーケンスの要素をバイパスした後、残りの要素を返します。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>)

指定された条件が満たされる限り、シーケンスの要素をバイパスした後、残りの要素を返します。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.

次のコード例は、条件が true である限り、SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) を使用して配列の要素をスキップする方法を示しています。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
Console.WriteLine(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.

このメソッドは、predicate を使用して source の各要素をテストし、結果が 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.

TakeWhile メソッドと SkipWhile メソッドは、機能的に補完されます。The TakeWhile and SkipWhile methods are functional complements. シーケンス coll と純粋関数 pを指定した場合、coll.TakeWhile(p)coll.SkipWhile(p) の結果を連結すると、collと同じシーケンスが生成されます。Given 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>)

指定された条件が満たされる限り、シーケンスの要素をバイパスした後、残りの要素を返します。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.

次のコード例は、要素のインデックスに依存する条件が true である限り、SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) を使用して配列の要素をスキップする方法を示しています。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
Console.WriteLine(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>) メソッドは predicate を使用して source の各要素をテストし、結果が 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番目の引数は、source内の要素の0から始まるインデックスを表します。The second argument represents the zero-based index of the element within source.

TakeWhile メソッドと SkipWhile メソッドは、機能的に補完されます。The TakeWhile and SkipWhile methods are functional complements. シーケンス coll と純粋関数 pを指定した場合、coll.TakeWhile(p)coll.SkipWhile(p) の結果を連結すると、collと同じシーケンスが生成されます。Given 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.

こちらもご覧ください

適用対象