Enumerable.Take<TSource>(IEnumerable<TSource>, Int32) Method

Definition

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)

Type Parameters

TSource

O tipo dos elementos de source.The type of the elements of source.

Parameters

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.

Returns

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.

Exceptions

source é null.source is null.

Examples

O exemplo de código a seguir demonstra como usar Take 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

Remarks

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 método GetEnumerator diretamente ou usando foreach no Visual C# ou For Each em 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 produz elementos até que count elementos tenham sido rendedos ou source não contém 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 em 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 uma IEnumerable<T> vazia será retornada.If count is less than or equal to zero, source is not enumerated and an empty IEnumerable<T> is returned.

Os métodos Take e Skip são complementos funcionais.The Take and Skip methods are functional complements. Dado um coll de sequência e um inteiro n, concatenar os resultados de coll.Take(n) e coll.Skip(n) produz a mesma sequência que 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 cláusula Take se traduz em uma invocação de Take.In Visual Basic query expression syntax, a Take clause translates to an invocation of Take.

Applies to

See also