Take (Cláusula, Visual Basic)
Devuelve un número especificado de elementos contiguos desde el principio de una colección.
Sintaxis
Take count
Partes
count
Necesario. Valor o expresión que se evalúa como el número de elementos de la secuencia que se va a devolver.
Comentarios
La cláusula Take
hace que una consulta incluya un número especificado de elementos contiguos desde el inicio de una lista de resultados. El parámetro count
especifica el número de elementos que se van a incluir.
Puede usar la cláusula Take
con la cláusula Skip
para devolver un rango de datos de cualquier segmento de una consulta. Para ello, pase el índice del primer elemento del rango a la cláusula Skip
y el tamaño del rango a la cláusula Take
. En este caso, la cláusula Take
se debe especificar después de la cláusula Skip
.
Al usar la cláusula Take
en una consulta, es posible que también tenga que asegurarse de que los resultados se devuelven en un orden que permitirá que la cláusula Take
incluya los resultados previstos. Consulte Cláusula Order By para más información sobre cómo ordenar los resultados de la consulta.
Puede usar la cláusula TakeWhile
para especificar que solo se devuelven ciertos elementos, en función de una condición suministrada.
Ejemplo
En el ejemplo de código siguiente, se usa la cláusula Take
junto con la cláusula Skip
para devolver datos de una consulta en páginas. La función GetCustomers usa la cláusula Skip
para omitir los clientes de la lista hasta el valor de índice inicial suministrado y utiliza la cláusula Take
para devolver una página de clientes a partir de dicho 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