Clausola Take (Visual Basic)
Restituisce un numero specificato di elementi contigui dall'inizio di una raccolta.
Sintassi
Take count
Parti
count
Obbligatorio. Valore o espressione che restituisce il numero di elementi della sequenza da restituire.
Osservazioni:
La clausola Take
fa in modo che una query includa un numero specificato di elementi contigui dall'inizio di un elenco di risultati. Il numero di elementi da includere viene specificato dal parametro count
.
È possibile usare la clausola Take
con la clausola Skip
per restituire un intervallo di dati da qualsiasi segmento di una query. A tale scopo, passare l'indice del primo elemento dell'intervallo alla clausola Skip
e le dimensioni dell'intervallo alla clausola Take
. In questo caso, la clausola Take
deve essere specificata dopo la clausola Skip
.
Quando si usa la clausola Take
in una query, potrebbe anche essere necessario assicurarsi che i risultati vengano restituiti in un ordine che consentirà alla clausola Take
di includere i risultati previsti. Per altre informazioni sull'ordinamento dei risultati della query, vedere Clausola Order By.
È possibile usare la clausola TakeWhile
per specificare che vengano restituiti solo determinati elementi, a seconda di una condizione fornita.
Esempio
Nell'esempio di codice seguente viene usata la clausola Take
insieme alla clausola Skip
per restituire dati da una query nelle pagine. La funzione GetCustomers usa la clausola Skip
per ignorare i clienti nell'elenco fino al valore di indice iniziale specificato e usa la clausola Take
per restituire una pagina di clienti a partire da tale valore di indice.
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