Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Operacja sortowania porządkuje elementy sekwencji na podstawie co najmniej jednego atrybutu. Pierwsze kryterium sortowania wykonuje sortowanie podstawowe dla elementów. Określając drugie kryterium sortowania, można sortować elementy w każdej podstawowej grupie sortowania.
Ważne
Te przykłady używają System.Collections.Generic.IEnumerable<T> źródła danych. Źródła danych oparte na System.Linq.IQueryProviderSystem.Linq.IQueryable<T> źródłach danych i drzewach wyrażeń. Drzewa wyrażeń mają ograniczenia dotyczące dozwolonej składni języka C#. Ponadto każde IQueryProvider
źródło danych, takie jak EF Core , może nakładać więcej ograniczeń. Zapoznaj się z dokumentacją źródła danych.
Poniższa ilustracja przedstawia wyniki operacji sortowania alfabetycznego w sekwencji znaków:
Standardowe metody operatorów zapytań, które sortują dane, są wymienione w poniższej sekcji.
Metody
Nazwa metody | opis | Składnia wyrażeń zapytań języka C# | Więcej informacji |
---|---|---|---|
Kolejność według | Sortuje wartości w kolejności rosnącej. | orderby |
Enumerable.OrderBy Queryable.OrderBy |
OrderByDescending (Sortuj malejąco) | Sortuje wartości w kolejności malejącej. | orderby … descending |
Enumerable.OrderByDescending Queryable.OrderByDescending |
Następnie | Wykonuje sortowanie pomocnicze w kolejności rosnącej. | orderby …, … |
Enumerable.ThenBy Queryable.ThenBy |
NastępnieByDescending | Wykonuje sortowanie pomocnicze w kolejności malejącej. | orderby …, … descending |
Enumerable.ThenByDescending Queryable.ThenByDescending |
Wycofaj | Odwraca kolejność elementów w kolekcji. | Nie dotyczy. | Enumerable.Reverse Queryable.Reverse |
Uwaga
W poniższych przykładach w tym artykule użyto typowych źródeł danych dla tego obszaru.
Każdy z nich Student
ma poziom klasy, dział podstawowy i serię wyników. Obiekt Teacher
ma również właściwość identyfikującą City
kampus, w którym nauczyciel posiada zajęcia. Element Department
ma nazwę i odwołanie do osoby Teacher
, która służy jako szef działu.
Przykładowy zestaw danych można znaleźć w repozytorium źródłowym.
public enum GradeLevel
{
FirstYear = 1,
SecondYear,
ThirdYear,
FourthYear
};
public class Student
{
public required string FirstName { get; init; }
public required string LastName { get; init; }
public required int ID { get; init; }
public required GradeLevel Year { get; init; }
public required List<int> Scores { get; init; }
public required int DepartmentID { get; init; }
}
public class Teacher
{
public required string First { get; init; }
public required string Last { get; init; }
public required int ID { get; init; }
public required string City { get; init; }
}
public class Department
{
public required string Name { get; init; }
public int ID { get; init; }
public required int TeacherID { get; init; }
}
Podstawowy sortowanie rosnące
W poniższym przykładzie pokazano, jak używać orderby
klauzuli w zapytaniu LINQ w celu sortowania tablicy nauczycieli według nazwy rodziny w kolejności rosnącej.
IEnumerable<string> query = from teacher in teachers
orderby teacher.Last
select teacher.Last;
foreach (string str in query)
{
Console.WriteLine(str);
}
Równoważne zapytanie napisane przy użyciu składni metody jest wyświetlane w następującym kodzie:
IEnumerable<string> query = teachers
.OrderBy(teacher => teacher.Last)
.Select(teacher => teacher.Last);
foreach (string str in query)
{
Console.WriteLine(str);
}
Sortowanie malejące podstawowe
W następnym przykładzie pokazano, jak za pomocą klauzuli orderby descending
w zapytaniu LINQ posortować nauczycieli według nazwy rodziny w kolejności malejącej.
IEnumerable<string> query = from teacher in teachers
orderby teacher.Last descending
select teacher.Last;
foreach (string str in query)
{
Console.WriteLine(str);
}
Równoważne zapytanie napisane przy użyciu składni metody jest wyświetlane w następującym kodzie:
IEnumerable<string> query = teachers
.OrderByDescending(teacher => teacher.Last)
.Select(teacher => teacher.Last);
foreach (string str in query)
{
Console.WriteLine(str);
}
Pomocnicze sortowanie rosnące
W poniższym przykładzie pokazano, jak używać klauzuli orderby
w zapytaniu LINQ w celu wykonania sortowania podstawowego i pomocniczego. Nauczyciele są sortowani przede wszystkim przez miasto i po drugie według ich nazwiska rodzinnego, zarówno w kolejności rosnącej.
IEnumerable<(string, string)> query = from teacher in teachers
orderby teacher.City, teacher.Last
select (teacher.Last, teacher.City);
foreach ((string last, string city) in query)
{
Console.WriteLine($"City: {city}, Last Name: {last}");
}
Równoważne zapytanie napisane przy użyciu składni metody jest wyświetlane w następującym kodzie:
IEnumerable<(string, string)> query = teachers
.OrderBy(teacher => teacher.City)
.ThenBy(teacher => teacher.Last)
.Select(teacher => (teacher.Last, teacher.City));
foreach ((string last, string city) in query)
{
Console.WriteLine($"City: {city}, Last Name: {last}");
}
Pomocniczy sortowanie malejące
W następnym przykładzie pokazano, jak użyć orderby descending
klauzuli w zapytaniu LINQ w celu wykonania sortowania podstawowego w kolejności rosnącej i sortowania pomocniczego w kolejności malejącej. Nauczyciele są sortowani przede wszystkim przez miasto i po drugie według ich nazwiska rodzinnego.
IEnumerable<(string, string)> query = from teacher in teachers
orderby teacher.City, teacher.Last descending
select (teacher.Last, teacher.City);
foreach ((string last, string city) in query)
{
Console.WriteLine($"City: {city}, Last Name: {last}");
}
Równoważne zapytanie napisane przy użyciu składni metody jest wyświetlane w następującym kodzie:
IEnumerable<(string, string)> query = teachers
.OrderBy(teacher => teacher.City)
.ThenByDescending(teacher => teacher.Last)
.Select(teacher => (teacher.Last, teacher.City));
foreach ((string last, string city) in query)
{
Console.WriteLine($"City: {city}, Last Name: {last}");
}