Предложение Take (Visual Basic)

Возвращает указанное число идущих подряд элементов с начала коллекции.

Синтаксис

Take count  

Детали

count
Обязательный. Значение или выражение, которое оценивает количество элементов возвращаемой последовательности.

Замечания

Предложение Take приводит к тому, что запрос включает указанное число смежных элементов из начала списка результатов. Число элементов, которые необходимо включить, указывается параметром count .

Предложение можно использовать Take с Skip предложением для возврата диапазона данных из любого сегмента запроса. Для этого передайте индекс первого элемента диапазона Skip предложению и размер диапазона предложению Take . В этом случае предложение Take должно быть указано после Skip предложения.

При использовании Take предложения в запросе также может потребоваться убедиться, что результаты возвращаются в порядке, позволяющем Take предложению включать предполагаемые результаты. Дополнительные сведения о заказе результатов запроса см. в предложении Order By.

Предложение можно использовать TakeWhile для указания того, что возвращаются только определенные элементы в зависимости от указанного условия.

Пример

В следующем примере кода предложение используется Take вместе с Skip предложением для возврата данных из запроса на страницах. Функция GetCustomers использует Skip предложение для обхода клиентов в списке до указанного начального значения индекса и использует Take предложение для возврата страницы клиентов, начиная с этого значения индекса.

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

См. также