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