Enumerable.SkipWhile Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Ignora elementos em uma sequência, desde que uma condição especificada seja verdadeira e, em seguida, retorna os elementos restantes.
Sobrecargas
| Nome | Description |
|---|---|
| SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) |
Ignora elementos em uma sequência, desde que uma condição especificada seja verdadeira e, em seguida, retorna os elementos restantes. |
| SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) |
Ignora elementos em uma sequência, desde que uma condição especificada seja verdadeira e, em seguida, retorna os elementos restantes. O índice do elemento é usado na lógica da função de predicado. |
SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)
Ignora elementos em uma sequência, desde que uma condição especificada seja verdadeira e, em seguida, retorna os elementos restantes.
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)
Parâmetros de tipo
- TSource
O tipo dos elementos de source.
Parâmetros
- source
- IEnumerable<TSource>
Um IEnumerable<T> elemento do qual retornar elementos.
Retornos
Um IEnumerable<T> que contém os elementos da sequência de entrada começando no primeiro elemento da série linear que não passa no teste especificado por predicate.
Exceções
source ou predicate é null.
Exemplos
O exemplo de código a seguir demonstra como usar SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) para ignorar elementos de uma matriz, desde que uma condição seja verdadeira.
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
Comentários
O SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) método é implementado usando a execução adiada. O valor de retorno imediato é um objeto que armazena todas as informações necessárias para executar a ação. A consulta representada por esse método não é executada até que o objeto seja enumerado chamando seu método GetEnumerator diretamente ou usando foreach em C# ou For Each em Visual Basic.
Esse método testa cada elemento usando sourcepredicate e ignora o elemento se o resultado for true. Depois que a função de predicado retorna false para um elemento, esse elemento e os elementos restantes source são produzidos e não há mais invocações de predicate.
Se predicate retornar true para todos os elementos na sequência, um vazio IEnumerable<T> será retornado.
Os TakeWhile métodos e os SkipWhile métodos são complementos funcionais. Dada uma sequência coll de coleção e uma função ppura, concatenando os resultados coll.TakeWhile(p) e coll.SkipWhile(p) gerando a mesma sequência que coll.
Em Visual Basic sintaxe de expressão de consulta, uma cláusula Skip While se traduz em uma invocação de SkipWhile.
Confira também
- cláusula Skip While (Visual Basic)
Aplica-se a
SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>)
Ignora elementos em uma sequência, desde que uma condição especificada seja verdadeira e, em seguida, retorna os elementos restantes. O índice do elemento é usado na lógica da função de predicado.
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)
Parâmetros de tipo
- TSource
O tipo dos elementos de source.
Parâmetros
- source
- IEnumerable<TSource>
Um IEnumerable<T> elemento do qual retornar elementos.
Uma função para testar cada elemento de origem para uma condição; o segundo parâmetro da função representa o índice do elemento de origem.
Retornos
Um IEnumerable<T> que contém os elementos da sequência de entrada começando no primeiro elemento da série linear que não passa no teste especificado por predicate.
Exceções
source ou predicate é null.
Exemplos
O exemplo de código a seguir demonstra como usar SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) para ignorar elementos de uma matriz, desde que uma condição que dependa do índice do elemento seja verdadeira.
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
Comentários
Esse método é implementado usando a execução adiada. O valor de retorno imediato é um objeto que armazena todas as informações necessárias para executar a ação. A consulta representada por esse método não é executada até que o objeto seja enumerado chamando seu método GetEnumerator diretamente ou usando foreach em C# ou For Each em Visual Basic.
O SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) método testa cada elemento usando sourcepredicate e ignora o elemento se o resultado for true. Depois que a função de predicado retorna false para um elemento, esse elemento e os elementos restantes source são produzidos e não há mais invocações de predicate.
Se predicate retornar true para todos os elementos na sequência, um vazio IEnumerable<T> será retornado.
O primeiro argumento representa predicate o elemento a ser testado. O segundo argumento representa o índice baseado em zero do elemento dentro source.
Os TakeWhile métodos e os SkipWhile métodos são complementos funcionais. Dada uma sequência coll de coleção e uma função ppura, concatenando os resultados coll.TakeWhile(p) e coll.SkipWhile(p) gerando a mesma sequência que coll.
Em Visual Basic sintaxe de expressão de consulta, uma cláusula Skip While se traduz em uma invocação de SkipWhile.
Confira também
- cláusula Skip While (Visual Basic)