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> ,其中包含輸入序列開頭沒有通過指定測試線性系列中的第一個項目中的項目predicateAn 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方法直接或透過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,並略過的項目,如果結果是trueThis method tests each element of source by using predicate and skips the element if the result is true. 述詞函式傳回之後false項目,該項目與中的其餘元素source產生且有沒有更多的引動過程的predicateAfter 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子句會轉譯成的引動過程SkipWhileIn 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> ,其中包含輸入序列開頭沒有通過指定測試線性系列中的第一個項目中的項目predicateAn 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方法直接或透過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,並略過的項目,如果結果是trueThe 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產生且有沒有更多的引動過程的predicateAfter 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. 第二個引數所代表的項目內的以零起始的索引sourceThe 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子句會轉譯成的引動過程SkipWhileIn Visual Basic query expression syntax, a Skip While clause translates to an invocation of SkipWhile.

另請參閱

適用於