Cláusula Take (Visual Basic)

Retorna um número especificado de elementos contíguos do início de uma coleção.

Sintaxe

Take count  

Partes

count
Obrigatórios. Um valor ou uma expressão que é avaliada como o número de elementos da sequência a ser retornada.

Comentários

A cláusula Take faz com que uma consulta inclua um número especificado de elementos contíguos desde o início de uma lista de resultados. O número de elementos a serem incluídos é especificado pelo parâmetro count.

Você pode usar a cláusula Take com a cláusula Skip para retornar um intervalo de dados de qualquer segmento de uma consulta. Para fazer isso, passe o índice do primeiro elemento do intervalo para a cláusula Skip e o tamanho do intervalo para a cláusula Take. Nesse caso, a cláusula Take deve ser especificada após a cláusula Skip.

Ao usar a cláusula Take em uma consulta, talvez você também precise garantir que os resultados sejam retornados em uma ordem que permitirá que a cláusula Take inclua os resultados pretendidos. Para obter mais informações sobre como ordenar resultados da consulta, confira Cláusula Order By.

Você pode usar a cláusula TakeWhile para especificar que apenas determinados elementos sejam retornados, dependendo de uma condição fornecida.

Exemplo

O exemplo de código a seguir usa a cláusula Take junto com a cláusula Skip para retornar dados de uma consulta em páginas. A função GetCustomers usa a cláusula Skip para ignorar os clientes na lista até o valor de índice inicial fornecido e usa a cláusula Take para retornar uma página de clientes começando desse valor de índice.

Public Sub PagingSample()
    Dim pageNumber As Integer = 0
    Dim pageSize As Integer = 10

    Dim customersPage = GetCustomers(pageNumber * pageSize, pageSize)

    Do While customersPage IsNot Nothing
        Console.WriteLine(vbCrLf & "Page: " & pageNumber + 1 & vbCrLf)

        For Each cust In customersPage
            Console.WriteLine(cust.CustomerID & ", " & cust.CompanyName)
        Next

        Console.WriteLine(vbCrLf)

        pageNumber += 1
        customersPage = GetCustomers(pageNumber * pageSize, pageSize)
    Loop
End Sub

Public Function GetCustomers(ByVal startIndex As Integer,
                             ByVal pageSize As Integer) As List(Of Customer)

    Dim customers = GetCustomerList()

    Dim returnCustomers = From cust In customers
                          Skip startIndex Take pageSize

    If returnCustomers.Count = 0 Then Return Nothing

    Return returnCustomers
End Function

Confira também