Сортировка данных
Операция сортировки упорядочивает элементы последовательности на основе одного или нескольких атрибутов. Первое условие сортировки связано с выполнением основной сортировки элементов. Указав второе условие сортировки, можно сортировать элементы внутри каждой группы основной сортировки.
На следующем рисунке показаны результаты операции сортировки в алфавитном порядке в последовательности знаков.
Далее перечислены методы стандартных операторов запроса, которые выполняют сортировку данных.
Методы
Имя метода |
Описание |
Синтаксис выражения запроса C# |
Синтаксис выражения запроса Visual Basic |
Дополнительные сведения |
---|---|---|---|---|
OrderBy |
Сортировка значений в возрастающем порядке. |
orderby |
Order By |
|
OrderByDescending |
Сортировка значений в убывающем порядке. |
orderby … descending |
Order By … Descending |
|
ThenBy |
Дополнительная сортировка по возрастанию. |
orderby …, … |
Order By …, … |
|
ThenByDescending |
Дополнительная сортировка по убыванию. |
orderby …, … descending |
Order By …, … Descending |
|
Обратный |
Изменение порядка элементов в коллекции на обратный. |
Неприменимо. |
Неприменимо. |
Примеры синтаксиса выражений запроса
Примеры основной сортировки
Основная сортировка по возрастанию
В следующем примере показано использование предложения orderby (Order By в Visual Basic) в запросе 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
string[] words = { "the", "quick", "brown", "fox", "jumps" };
IEnumerable<string> query = from word in words
orderby word.Length
select word;
foreach (string str in query)
Console.WriteLine(str);
/* This code produces the following output:
the
fox
quick
brown
jumps
*/
Основная сортировка по убыванию
В следующем примере показано использование предложения orderby descending (Order By Descending в Visual Basic) в запросе 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
string[] words = { "the", "quick", "brown", "fox", "jumps" };
IEnumerable<string> query = from word in words
orderby word.Substring(0, 1) descending
select word;
foreach (string str in query)
Console.WriteLine(str);
/* This code produces the following output:
the
quick
jumps
fox
brown
*/
Примеры дополнительной сортировки
Дополнительная сортировка по возрастанию
В следующем примере показано использование предложения orderby (Order By в Visual Basic) в запросе 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
string[] words = { "the", "quick", "brown", "fox", "jumps" };
IEnumerable<string> query = from word in words
orderby word.Length, word.Substring(0, 1)
select word;
foreach (string str in query)
Console.WriteLine(str);
/* This code produces the following output:
fox
the
brown
jumps
quick
*/
Дополнительная сортировка по убыванию
В следующем примере показано использование предложения orderby descending (Order By Descending в Visual Basic) в запросе 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
string[] words = { "the", "quick", "brown", "fox", "jumps" };
IEnumerable<string> query = from word in words
orderby word.Length, word.Substring(0, 1) descending
select word;
foreach (string str in query)
Console.WriteLine(str);
/* This code produces the following output:
the
fox
quick
jumps
brown
*/
См. также
Задачи
Практическое руководство. Сортировка результатов запроса с помощью LINQ (Visual Basic)
Практическое руководство. Сортировка или фильтрация текстовых данных по любому слову или полю (LINQ)
Ссылки
Предложение orderby (Справочник по C#)
Предложение Order By (Visual Basic)