Take – klauzule (Visual Basic)

Vrátí zadaný počet souvislých prvků od začátku kolekce.

Syntax

Take count  

Součásti

count
Povinná hodnota. Hodnota nebo výraz, který se vyhodnotí jako počet prvků sekvence, které se mají vrátit.

Poznámky

Klauzule Take způsobí, že dotaz bude obsahovat zadaný počet souvislých prvků od začátku seznamu výsledků. Počet prvků, které se mají zahrnout, je určen parametrem count .

Klauzuli Take s klauzulí Skip můžete použít k vrácení rozsahu dat z libovolného segmentu dotazu. Provedete to tak, že klauzuli předáte index prvního prvku oblasti Skip a do klauzule předáte velikost rozsahu Take . V takovém případě musí být klauzule Take zadána za klauzulí Skip .

Při použití klauzule Take v dotazu může být také potřeba zajistit, aby výsledky byly vráceny v pořadí, které klauzuli umožní Take zahrnout zamýšlené výsledky. Další informace o řazení výsledků dotazu najdete v tématu Klauzule Řazení podle.

Pomocí klauzule TakeWhile můžete určit, že v závislosti na zadané podmínce budou vráceny pouze určité prvky.

Příklad

Následující příklad kódu používá klauzuli Take společně s klauzulí Skip k vrácení dat z dotazu na stránkách. Funkce GetCustomers používá klauzuli Skip k obejití zákazníků v seznamu až do zadané počáteční hodnoty indexu Take a používá klauzuli k vrácení stránky zákazníků začínající z této hodnoty indexu.

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

Viz také