Разделение данных

Секционированием в LINQ называют операцию разделения входной последовательности на два раздела без изменения порядка элементов, а затем возвращения одного из разделов.

На следующем рисунке показаны результаты трех различных операций секционирования в последовательности знаков. Первая операция возвращает первые три элемента в последовательности. Вторая операция пропускает первые три элемента и возвращает остальные элементы. Третья операция пропускает первые два элемента в последовательности и возвращает три следующих элемента.

Операции секционирования LINQ

Методы стандартных операторов запросов, которые выполняют секционирование, перечислены в следующем разделе.

Операторы

Имя оператора

Описание

Синтаксис выражения запроса C#

Синтаксис выражения запроса Visual Basic

Дополнительные сведения

Skip

Пропускает элементы до указанной позиции в последовательности.

Неприменимо.

Skip

Enumerable.Skip<TSource>

Queryable.Skip<TSource>

SkipWhile

Пропускает элементы, пока элемент не удовлетворит условию функции предиката.

Неприменимо.

Skip While

Enumerable.SkipWhile

Queryable.SkipWhile

Take

Возвращает элементы на указанную позицию в последовательности.

Неприменимо.

Take

Enumerable.Take<TSource>

Queryable.Take<TSource>

TakeWhile

Принимает элементы, пока элемент не удовлетворит условию функции предиката.

Неприменимо.

Take While

Enumerable.TakeWhile

Queryable.TakeWhile

Примеры синтаксиса выражений запроса

Skip

Следующий пример кода использует предложение Skip Visual Basic для пропуска первых четырех строк в массиве строк перед возвращением оставшихся строк в массиве.


        Dim words = {"an", "apple", "a", "day", "keeps", "the", "doctor", "away"}

        Dim query = From word In words 
                    Skip 4

        Dim sb As New System.Text.StringBuilder()
        For Each str As String In query
            sb.AppendLine(str)
        Next

        ' Display the results.
        MsgBox(sb.ToString())

        ' This code produces the following output:

        ' keeps
        ' the
        ' doctor
        ' away

SkipWhile

Следующий пример кода использует предложение Skip While Visual Basic для пропуска строк в массиве, начинающихся с буквы "a". Оставшиеся строки массива возвращаются.


        Dim words = {"an", "apple", "a", "day", "keeps", "the", "doctor", "away"}

        Dim query = From word In words 
                    Skip While word.Substring(0, 1) = "a"

        Dim sb As New System.Text.StringBuilder()
        For Each str As String In query
            sb.AppendLine(str)
        Next

        ' Display the results.
        MsgBox(sb.ToString())

        ' This code produces the following output:

        ' day
        ' keeps
        ' the
        ' doctor
        ' away

Take

Следующий пример кода использует предложение Take Visual Basic для возврата первых двух строк в массиве строк.


        Dim words = {"an", "apple", "a", "day", "keeps", "the", "doctor", "away"}

        Dim query = From word In words 
                    Take 2

        Dim sb As New System.Text.StringBuilder()
        For Each str As String In query
            sb.AppendLine(str)
        Next

        ' Display the results.
        MsgBox(sb.ToString())

        ' This code produces the following output:

        ' an
        ' apple

TakeWhile

Следующий пример кода использует предложение Take While Visual Basic для возврата строк, длина которых не превышает пяти знаков, из массива.


        Dim words = {"an", "apple", "a", "day", "keeps", "the", "doctor", "away"}

        Dim query = From word In words 
                    Take While word.Length < 6

        Dim sb As New System.Text.StringBuilder()
        For Each str As String In query
            sb.AppendLine(str)
        Next

        ' Display the results.
        MsgBox(sb.ToString())

        ' This code produces the following output:

        ' an
        ' apple
        ' a
        ' day
        ' keeps
        ' the

См. также

Ссылки

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

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

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

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

System.Linq

Основные понятия

Общие сведения о стандартных операторах запроса