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


Сортировка данных (Visual Basic)

Операция сортировки упорядочивает элементы последовательности на основе одного или нескольких атрибутов. Первый критерий сортировки выполняет первичную сортировку элементов. Указав второй критерий поиска, можно сортировать элементы внутри каждой группы первичной сортировки.

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

Рисунок, показывающий операцию сортировки в алфавитном порядке.

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

Методы

Имя метода Описание Синтаксис выражения запроса Visual Basic Дополнительная информация
Упорядочить по Сортировка значений в возрастающем порядке. Order By Enumerable.OrderBy

Queryable.OrderBy
УпорядочитьПоУбыванию Сортировка значений в убывающем порядке. Order By … Descending Enumerable.OrderByDescending

Queryable.OrderByDescending
ThenBy Дополнительная сортировка по возрастанию. Order By …, … Enumerable.ThenBy

Queryable.ThenBy
ThenByDescending (сортировка по убыванию) Дополнительная сортировка по убыванию. Order By …, … Descending Enumerable.ThenByDescending

Queryable.ThenByDescending
Реверс Изменение порядка элементов в коллекции на обратный. Неприменимо. Enumerable.Reverse

Queryable.Reverse

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

Основные примеры сортировки

Основная сортировка по возрастанию

В следующем примере показано, как использовать Order By предложение в запросе LINQ для сортировки строк в массиве по длине строки в порядке возрастания.

Dim words = {"the", "quick", "brown", "fox", "jumps"}

Dim sortQuery = From word In words
                Order By word.Length
                Select word

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

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

' This code produces the following output:

' the
' fox
' quick
' brown
' jumps

Основная сортировка по убыванию

В следующем примере показано, как использовать Order By Descending предложение в запросе LINQ для сортировки строк по их первой букве в порядке убывания.

Dim words = {"the", "quick", "brown", "fox", "jumps"}

Dim sortQuery = From word In words
                Order By word.Substring(0, 1) Descending
                Select word

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

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

' This code produces the following output:

' the
' quick
' jumps
' fox
' brown

Примеры вторичной сортировки

Дополнительная сортировка по возрастанию

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

Dim words = {"the", "quick", "brown", "fox", "jumps"}

Dim sortQuery = From word In words
                Order By word.Length, word.Substring(0, 1)
                Select word

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

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

' This code produces the following output:

' fox
' the
' brown
' jumps
' quick

Дополнительная сортировка по убыванию

В следующем примере показано использование предложения Order By Descending в запросе LINQ для выполнения основной сортировки по возрастанию и дополнительной сортировки по убыванию. Строки сортируются в первую очередь по длине и во второй раз по первой букве строки.

Dim words = {"the", "quick", "brown", "fox", "jumps"}

Dim sortQuery = From word In words
                Order By word.Length, word.Substring(0, 1) Descending
                Select word

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

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

' This code produces the following output:

' fox
' the
' quick
' jumps
' brown

См. также