Compartir a través de


Take (Cláusula, Visual Basic)

Devuelve un número especificado de elementos contiguos desde el inicio de una colección.

Sintaxis

Take count  

Partes

count
Obligatorio. Valor o expresión que se evalúa como el número de elementos de la secuencia que se va a devolver.

Observaciones

La Take cláusula hace que una consulta incluya un número especificado de elementos contiguos desde el principio de una lista de resultados. El parámetro especifica el count número de elementos que se van a incluir.

Puede usar la Take cláusula con la Skip cláusula para devolver un intervalo de datos de cualquier segmento de una consulta. Para ello, pase el índice del primer elemento del intervalo a la Skip cláusula y el tamaño del intervalo a la Take cláusula . En este caso, la Take cláusula debe especificarse después de la Skip cláusula .

Al usar la Take cláusula en una consulta, es posible que también tenga que asegurarse de que los resultados se devuelven en un orden que permita que la Take cláusula incluya los resultados previstos. Para obtener más información sobre cómo ordenar los resultados de la consulta, vea Order By Clause.

Puede usar la TakeWhile cláusula para especificar que solo se devuelvan determinados elementos, en función de una condición proporcionada.

Ejemplo

En el ejemplo de código siguiente se usa la Take cláusula junto con la Skip cláusula para devolver datos de una consulta en páginas. La función GetCustomers usa la Skip cláusula para omitir los clientes de la lista hasta el valor de índice inicial proporcionado y usa la Take cláusula para devolver una página de clientes a partir de ese 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

Consulte también