Take — Klauzula (Visual Basic)

Zwraca określoną liczbę ciągłych elementów od początku kolekcji.

Składnia

Take count  

generatora

count
Wymagany. Wartość lub wyrażenie, które oblicza liczbę elementów sekwencji do zwrócenia.

Uwagi

Klauzula Take powoduje, że zapytanie zawiera określoną liczbę ciągłych elementów na początku listy wyników. Liczba elementów do uwzględnienia jest określana przez count parametr .

Możesz użyć klauzuli Take z klauzulą , Skip aby zwrócić zakres danych z dowolnego segmentu zapytania. W tym celu przekaż indeks pierwszego elementu zakresu do Skip klauzuli i rozmiar zakresu do klauzuli Take . W takim przypadku klauzula Take musi zostać określona po klauzuli Skip .

W przypadku używania klauzuli Take w zapytaniu może być również konieczne upewnienie się, że wyniki zostaną zwrócone w kolejności, która umożliwi klauzulę Take dołączania zamierzonych wyników. Aby uzyskać więcej informacji na temat porządkowania wyników zapytania, zobacz Klauzula Order By.

Możesz użyć klauzuli TakeWhile , aby określić, że zwracane są tylko niektóre elementy, w zależności od podanego warunku.

Przykład

Poniższy przykład kodu używa klauzuli Take wraz z Skip klauzulą , aby zwracać dane z zapytania na stronach. Funkcja GetCustomers używa Skip klauzuli , aby pominąć klientów na liście do momentu podanej wartości indeksu początkowego i używa Take klauzuli , aby zwrócić stronę klientów rozpoczynających się od tej wartości indeksu.

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

Zobacz też