Enumerable.SkipWhile Metoda

Definicja

Pomija elementy w sekwencji tak długo, jak określony warunek ma wartość true, a następnie zwraca pozostałe elementy.Bypasses elements in a sequence as long as a specified condition is true and then returns the remaining elements.

Przeciążenia

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

Pomija elementy w sekwencji tak długo, jak określony warunek ma wartość true, a następnie zwraca pozostałe elementy.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>)

Pomija elementy w sekwencji tak długo, jak określony warunek ma wartość true, a następnie zwraca pozostałe elementy.Bypasses elements in a sequence as long as a specified condition is true and then returns the remaining elements. Indeks elementu jest używany w logice funkcji predykatu.The element's index is used in the logic of the predicate function.

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

Pomija elementy w sekwencji tak długo, jak określony warunek ma wartość true, a następnie zwraca pozostałe elementy.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)

Parametry typu

TSource

Typ elementów source .The type of the elements of source.

Parametry

source
IEnumerable<TSource>

IEnumerable<T>Do zwrócenia elementów z.An IEnumerable<T> to return elements from.

predicate
Func<TSource,Boolean>

Funkcja testowania każdego elementu na stanie.A function to test each element for a condition.

Zwraca

IEnumerable<TSource>

Element IEnumerable<T> zawierający elementy z sekwencji wejściowej, zaczynając od pierwszego elementu w serii liniowej, który nie przekazuje testu określonego przez 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.

Wyjątki

source lub predicate jest null .source or predicate is null.

Przykłady

Poniższy przykład kodu demonstruje, jak używać SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) do pomijania elementów tablicy, tak długo, jak warunek ma wartość 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
Console.WriteLine(output.ToString())

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

Uwagi

SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)Metoda jest implementowana przy użyciu odroczonego wykonania.The SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) method is implemented by using deferred execution. Bezpośrednio zwracana wartość jest obiektem, który przechowuje wszystkie informacje wymagane do wykonania akcji.The immediate return value is an object that stores all the information that is required to perform the action. Zapytanie reprezentowane przez tę metodę nie jest wykonywane do momentu wyliczenia obiektu przez wywołanie jego GetEnumerator metody bezpośrednio lub przy użyciu foreach w Visual C# lub For Each w Visual 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.

Ta metoda sprawdza każdy element przy source użyciu predicate i pomija element, jeśli wynik jest true .This method tests each element of source by using predicate and skips the element if the result is true. Po powrocie funkcji predykatu false dla elementu, ten element i pozostałe elementy w są naliczane source i nie ma więcej wywołań 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.

Jeśli predicate zwraca true dla wszystkich elementów w sekwencji, IEnumerable<T> zwracany jest pusty.If predicate returns true for all elements in the sequence, an empty IEnumerable<T> is returned.

TakeWhileMetody i SkipWhile są uzupełnieniem funkcjonalnym.The TakeWhile and SkipWhile methods are functional complements. Uwzględniając sekwencję coll i czystą funkcję p , łączenie wyników coll.TakeWhile(p) i coll.SkipWhile(p) daje taką samą sekwencję jak 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.

W Visual Basic składni wyrażenia zapytania, Skip While klauzula tłumaczy na wywołanie SkipWhile .In Visual Basic query expression syntax, a Skip While clause translates to an invocation of SkipWhile.

Dotyczy

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

Pomija elementy w sekwencji tak długo, jak określony warunek ma wartość true, a następnie zwraca pozostałe elementy.Bypasses elements in a sequence as long as a specified condition is true and then returns the remaining elements. Indeks elementu jest używany w logice funkcji predykatu.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)

Parametry typu

TSource

Typ elementów source .The type of the elements of source.

Parametry

source
IEnumerable<TSource>

IEnumerable<T>Do zwrócenia elementów z.An IEnumerable<T> to return elements from.

predicate
Func<TSource,Int32,Boolean>

Funkcja do testowania każdego elementu źródłowego dla warunku; drugi parametr funkcji reprezentuje indeks elementu źródłowego.A function to test each source element for a condition; the second parameter of the function represents the index of the source element.

Zwraca

IEnumerable<TSource>

Element IEnumerable<T> zawierający elementy z sekwencji wejściowej, zaczynając od pierwszego elementu w serii liniowej, który nie przekazuje testu określonego przez 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.

Wyjątki

source lub predicate jest null .source or predicate is null.

Przykłady

Poniższy przykład kodu demonstruje, jak używać SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) do pomijania elementów tablicy, o ile warunek zależny od indeksu elementu ma wartość 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
Console.WriteLine(output.ToString())

' This code produces the following output:
'
' 4000
' 1500
' 5500

Uwagi

Ta metoda jest implementowana za pomocą odroczonego wykonania.This method is implemented by using deferred execution. Bezpośrednio zwracana wartość jest obiektem, który przechowuje wszystkie informacje wymagane do wykonania akcji.The immediate return value is an object that stores all the information that is required to perform the action. Zapytanie reprezentowane przez tę metodę nie jest wykonywane do momentu wyliczenia obiektu przez wywołanie jego GetEnumerator metody bezpośrednio lub przy użyciu foreach w Visual C# lub For Each w Visual 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>)Metoda sprawdza każdy element przy source użyciu predicate i pomija element, jeśli wynik jest 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. Po powrocie funkcji predykatu false dla elementu, ten element i pozostałe elementy w są naliczane source i nie ma więcej wywołań 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.

Jeśli predicate zwraca true dla wszystkich elementów w sekwencji, IEnumerable<T> zwracany jest pusty.If predicate returns true for all elements in the sequence, an empty IEnumerable<T> is returned.

Pierwszy argument predicate przedstawia element do przetestowania.The first argument of predicate represents the element to test. Drugi argument reprezentuje indeks (liczony od zera) elementu w source .The second argument represents the zero-based index of the element within source.

TakeWhileMetody i SkipWhile są uzupełnieniem funkcjonalnym.The TakeWhile and SkipWhile methods are functional complements. Uwzględniając sekwencję coll i czystą funkcję p , łączenie wyników coll.TakeWhile(p) i coll.SkipWhile(p) daje taką samą sekwencję jak 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.

W Visual Basic składni wyrażenia zapytania, Skip While klauzula tłumaczy na wywołanie SkipWhile .In Visual Basic query expression syntax, a Skip While clause translates to an invocation of SkipWhile.

Dotyczy