Поделиться через


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

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

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

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

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

Операторы

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

Описание

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

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

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

Skip

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

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

Skip

Enumerable.Skip``1

Queryable.Skip``1

SkipWhile

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

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

Skip While

Enumerable.SkipWhile

Queryable.SkipWhile``1

Take

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

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

Take

Enumerable.Take``1

Queryable.Take``1

TakeWhile

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

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

Take While

Enumerable.TakeWhile

Queryable.TakeWhile``1

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

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

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

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