Сортировка данных (Visual Basic)
Операция сортировки упорядочивает элементы последовательности на основе одного или нескольких атрибутов. Первый критерий сортировки выполняет первичную сортировку элементов. Указав второй критерий поиска, можно сортировать элементы внутри каждой группы первичной сортировки.
На следующем рисунке показаны результаты операции сортировки в алфавитном порядке в последовательности символов.
Далее перечислены методы стандартных операторов запроса, которые выполняют сортировку данных.
Методы
Имя метода | Description | Синтаксис выражения запроса Visual Basic | Дополнительные сведения |
---|---|---|---|
OrderBy | Сортировка значений в возрастающем порядке. | Order By |
Enumerable.OrderBy Queryable.OrderBy |
OrderByDescending | Сортировка значений в убывающем порядке. | 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
См. также
- System.Linq
- Общие сведения о стандартных операторах запроса (Visual Basic)
- Предложение Order By
- How to: Sort Query Results (Практическое руководство. Сортировка результатов запроса)
- Практическое руководство. Сортировка или фильтрация текстовых данных по любому слову или полю (LINQ) (Visual Basic)