Take-Klausel (Visual Basic)

Gibt eine angegebene Anzahl von zusammenhängenden Elementen vom Anfang einer Auflistung zurück.

Syntax

Take count  

Bestandteile

count
Erforderlich. Ein Wert oder ein Ausdruck, der die Anzahl der zurückzugebenden Elemente der Sequenz auswertet.

Bemerkungen

Die Take-Klausel bewirkt, dass eine Abfrage eine bestimmte Anzahl zusammenhängender Elemente vom Anfang einer Ergebnisliste enthält. Die Anzahl der einzuschließenden Elemente wird durch den count-Parameter angegeben.

Sie können die Take-Klausel mit der Skip-Klausel verwenden, um einen Datenbereich aus einem beliebigen Segment einer Abfrage zurückzugeben. Übergeben Sie hierzu den Index des ersten Elements des Bereichs an die Skip-Klausel und die Größe des Bereichs an die Take-Klausel. In diesem Fall muss die Take-Klausel nach der Skip-Klausel angegeben werden.

Wenn Sie die Take-Klausel in einer Abfrage verwenden, müssen Sie möglicherweise auch sicherstellen, dass die Ergebnisse in einer Reihenfolge zurückgegeben werden, in der die Take-Klausel die vorgesehenen Ergebnisse enthalten kann. Weitere Informationen zum Sortieren von Abfrageergebnissen finden Sie unter Order By-Klausel.

Mit der TakeWhile-Klausel können Sie angeben, dass je nach bereitgestellter Bedingung nur bestimmte Elemente zurückgegeben werden.

Beispiel

Im folgenden Codebeispiel wird die Take-Klausel zusammen mit der Skip-Klausel verwendet, um Daten aus einer Abfrage in Seiten zurückzugeben. Die GetCustomers-Funktion verwendet die Skip-Klausel, um die Kunden in der Liste bis zum angegebenen Anfangsindexwert zu umgehen, und verwendet die Take-Klausel, um eine Seite von Kunden zurückzugeben, die mit diesem Indexwert beginnen.

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

Weitere Informationen