Enumerable.Take<TSource>(IEnumerable<TSource>, Int32) Método
Definição
Retorna um número especificado de elementos contíguos do início de uma sequência.Returns a specified number of contiguous elements from the start of a sequence.
public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
static System::Collections::Generic::IEnumerable<TSource> ^ Take(System::Collections::Generic::IEnumerable<TSource> ^ source, int count);
public static System.Collections.Generic.IEnumerable<TSource> Take<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, int count);
static member Take : seq<'Source> * int -> seq<'Source>
<Extension()>
Public Function Take(Of TSource) (source As IEnumerable(Of TSource), count As Integer) As IEnumerable(Of TSource)
Parâmetros de tipo
- TSource
O tipo dos elementos de source
.The type of the elements of source
.
Parâmetros
- source
- IEnumerable<TSource>
A sequência da qual os elementos serão retornados.The sequence to return elements from.
- count
- Int32
O número de elementos a serem retornados.The number of elements to return.
Retornos
- IEnumerable<TSource>
Um IEnumerable<T> que contém o número especificado de elementos do início da sequência de entrada.An IEnumerable<T> that contains the specified number of elements from the start of the input sequence.
Exceções
source
é null
.source
is null
.
Exemplos
O exemplo de código a seguir demonstra como usar Take o para retornar elementos do início de uma sequência.The following code example demonstrates how to use Take to return elements from the start of a sequence.
int[] grades = { 59, 82, 70, 56, 92, 98, 85 };
IEnumerable<int> topThreeGrades =
grades.OrderByDescending(grade => grade).Take(3);
Console.WriteLine("The top three grades are:");
foreach (int grade in topThreeGrades)
{
Console.WriteLine(grade);
}
/*
This code produces the following output:
The top three grades are:
98
92
85
*/
' Create an array of Integer values that represent grades.
Dim grades() As Integer = {59, 82, 70, 56, 92, 98, 85}
' Get the highest three grades by first sorting
' them in descending order and then taking the
' first three values.
Dim topThreeGrades As IEnumerable(Of Integer) =
grades _
.OrderByDescending(Function(grade) grade) _
.Take(3)
' Display the results.
Dim output As New System.Text.StringBuilder("The top three grades are:" & vbCrLf)
For Each grade As Integer In topThreeGrades
output.AppendLine(grade)
Next
Console.WriteLine(output.ToString())
' This code produces the following output:
'
' The top three grades are:
' 98
' 92
' 85
Comentários
Esse método é implementado usando a execução adiada.This method is implemented by using deferred execution. O valor de retorno imediato é um objeto que armazena todas as informações necessárias para executar a ação.The immediate return value is an object that stores all the information that is required to perform the action. A consulta representada por esse método não é executada até que o objeto seja enumerado chamando o GetEnumerator
método diretamente ou usando o foreach
no Visual C# ou For Each
no 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.
Take enumera source
e gera elementos até que os count
elementos tenham sido reproduzidos ou source
não contenham mais elementos.Take enumerates source
and yields elements until count
elements have been yielded or source
contains no more elements. Se count
exceder o número de elementos no source
, todos os elementos de source
serão retornados.If count
exceeds the number of elements in source
, all elements of source
are returned.
Se count
for menor ou igual a zero, source
não será enumerado e um vazio IEnumerable<T> será retornado.If count
is less than or equal to zero, source
is not enumerated and an empty IEnumerable<T> is returned.
Os Take Skip métodos e são complementos funcionais.The Take and Skip methods are functional complements. Dada uma sequência coll
e um inteiro n
, concatenando os resultados de coll.Take(n)
e coll.Skip(n)
gera a mesma sequência como coll
.Given a sequence coll
and an integer n
, concatenating the results of coll.Take(n)
and coll.Skip(n)
yields the same sequence as coll
.
Em Visual Basic sintaxe de expressão de consulta, uma Take
cláusula se traduz em uma invocação de Take .In Visual Basic query expression syntax, a Take
clause translates to an invocation of Take.