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
MsgBox(output.ToString())

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

注釈

@No__t-0 メソッドは、遅延実行を使用して実装されます。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.

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

@No__t-0 および 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、@no__t 0 の句は 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
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.

@No__t-0 メソッドは、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.

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

@No__t-0 の最初の引数は、テストする要素を表します。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.

@No__t-0 および 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、@no__t 0 の句は SkipWhile の呼び出しに変換します。In Visual Basic query expression syntax, a Skip While clause translates to an invocation of SkipWhile.

こちらもご覧ください

適用対象