英語で読む

次の方法で共有


Enumerable.SkipWhile メソッド

定義

指定された条件が満たされる限り、シーケンスの要素をバイパスした後、残りの要素を返します。

オーバーロード

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

指定された条件が満たされる限り、シーケンスの要素をバイパスした後、残りの要素を返します。

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

指定された条件が満たされる限り、シーケンスの要素をバイパスした後、残りの要素を返します。 要素のインデックスは、述語関数のロジックで使用されます。

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

ソース:
Skip.cs
ソース:
Skip.cs
ソース:
Skip.cs

指定された条件が満たされる限り、シーケンスの要素をバイパスした後、残りの要素を返します。

C#
public static System.Collections.Generic.IEnumerable<TSource> SkipWhile<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,bool> predicate);

型パラメーター

TSource

source の要素の型。

パラメーター

source
IEnumerable<TSource>

返される要素が含まれる IEnumerable<T>

predicate
Func<TSource,Boolean>

各要素が条件を満たしているかどうかをテストする関数。

戻り値

IEnumerable<TSource>

predicate で指定されたテストに合格しない連続する最初の要素から入力シーケンスの要素を含む IEnumerable<T>

例外

source または predicatenull です。

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

C#
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
*/

注釈

メソッドは SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) 、遅延実行を使用して実装されます。 即時戻り値は、アクションの実行に必要なすべての情報を格納する オブジェクトです。 このメソッドで表されるクエリは、オブジェクトがメソッドを直接呼び出GetEnumeratorすか、C# または For Each Visual Basic で を使用foreachして列挙されるまで実行されません。

このメソッドは、 を使用して の source 各要素を predicate テストし、結果が の場合は true要素をスキップします。 述語関数が 要素に対してを返 false した後、その要素と 内の source 残りの要素が生成され、 の predicate呼び出しはそれ以上ありません。

シーケンス内のすべての要素に 対して を返trueす場合predicateは、空IEnumerable<T>の が返されます。

TakeWhileメソッドと SkipWhile メソッドは機能補完です。 コレクション シーケンス coll と純粋関数 pを指定すると、 の結果 coll.TakeWhile(p) を連結すると、 と coll.SkipWhile(p) 同じシーケンス collが生成されます。

Visual Basic クエリ式の構文では、 句は Skip WhileSkipWhile呼び出しに変換されます。

こちらもご覧ください

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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

ソース:
Skip.cs
ソース:
Skip.cs
ソース:
Skip.cs

指定された条件が満たされる限り、シーケンスの要素をバイパスした後、残りの要素を返します。 要素のインデックスは、述語関数のロジックで使用されます。

C#
public static System.Collections.Generic.IEnumerable<TSource> SkipWhile<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,int,bool> predicate);

型パラメーター

TSource

source の要素の型。

パラメーター

source
IEnumerable<TSource>

返される要素が含まれる IEnumerable<T>

predicate
Func<TSource,Int32,Boolean>

各ソース要素が条件に当てはまるかどうかをテストする関数。この関数の 2 つ目のパラメーターは、ソース要素のインデックスを表します。

戻り値

IEnumerable<TSource>

predicate で指定されたテストに合格しない連続する最初の要素から入力シーケンスの要素を含む IEnumerable<T>

例外

source または predicatenull です。

次のコード例では、要素のインデックスに依存する条件が true である限り、 を使用 SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) して配列の要素をスキップする方法を示します。

C#
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
*/

注釈

このメソッドは、遅延実行を使用して実装されます。 即時戻り値は、アクションの実行に必要なすべての情報を格納する オブジェクトです。 このメソッドで表されるクエリは、オブジェクトがメソッドを直接呼び出GetEnumeratorすか、C# または For Each Visual Basic で を使用foreachして列挙されるまで実行されません。

メソッドは SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) を使用して の source 各要素を predicate テストし、結果が の場合は true要素をスキップします。 述語関数が 要素に対してを返 false した後、その要素と 内の source 残りの要素が生成され、 の predicate呼び出しはそれ以上ありません。

シーケンス内のすべての要素に 対して を返trueす場合predicateは、空IEnumerable<T>の が返されます。

の最初の predicate 引数は、テストする要素を表します。 2 番目の引数は、 内 sourceの要素の 0 から始まるインデックスを表します。

TakeWhileメソッドと SkipWhile メソッドは機能補完です。 コレクション シーケンス coll と純粋関数 pを指定すると、 の結果 coll.TakeWhile(p) を連結すると、 と coll.SkipWhile(p) 同じシーケンス collが生成されます。

Visual Basic クエリ式の構文では、 句は Skip WhileSkipWhile呼び出しに変換されます。

こちらもご覧ください

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0