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

定義

只要指定的條件為 true,便略過序列中的項目,然後傳回其餘項目。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>)

只要指定的條件為 true,便略過序列中的項目,然後傳回其餘項目。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>)

只要指定的條件為 true,便略過序列中的項目,然後傳回其餘項目。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>)

只要指定的條件為 true,便略過序列中的項目,然後傳回其餘項目。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>

IEnumerable<T>,其中包含的項目位於輸入序列中,而且是從沒有通過 predicate 所指定測試之線性系列中的第一個項目開始。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.

例外狀況

sourcepredicatenullsource 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呼叫其方法, 或是在 Visual C#或For Each Visual Basic 中使用foreach來列舉物件之後, 才會執行。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. 在述詞函式source predicate針對元素傳回之後,會產生該專案和中的其餘元素,而且不會false再叫用。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為序列中的所有元素傳回, 則會IEnumerable<T>傳回空的。 trueIf 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, 串連的結果和coll.SkipWhile(p)產生與相同的順序。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>) SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>)

只要指定的條件為 true,便略過序列中的項目,然後傳回其餘項目。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>

用來測試各來源項目是否符合條件的函式;此函式的第二個參數代表來源項目的索引。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>

IEnumerable<T>,其中包含的項目位於輸入序列中,而且是從沒有通過 predicate 所指定測試之線性系列中的第一個項目開始。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.

例外狀況

sourcepredicatenullsource 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呼叫其方法, 或是在 Visual C#或For Each Visual Basic 中使用foreach來列舉物件之後, 才會執行。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.

方法會true使用source 測試predicate的每個專案, 並在結果為時略過元素。 SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>)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. 在述詞函式source predicate針對元素傳回之後,會產生該專案和中的其餘元素,而且不會false再叫用。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為序列中的所有元素傳回, 則會IEnumerable<T>傳回空的。 trueIf 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. 第二個引數代表內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, 串連的結果和coll.SkipWhile(p)產生與相同的順序。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.

另請參閱

適用於