Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Operace řazení objedná prvky sekvence na základě jednoho nebo více atributů. Prvním kritériem řazení je primární řazení prvků. Zadáním druhého kritéria řazení můžete řadit prvky v rámci každé primární skupiny řazení.
Důležité
Tyto ukázky používají System.Collections.Generic.IEnumerable<T> zdroj dat. Zdroje dat založené na System.Linq.IQueryProvider použití System.Linq.IQueryable<T> zdrojů dat a stromů výrazů Stromy výrazů mají omezení povolené syntaxe jazyka C#. Každý zdroj dat, například IQueryProvider, může navíc uplatňovat další omezení. Projděte si dokumentaci ke zdroji dat.
Následující obrázek znázorňuje výsledky abecední operace řazení v posloupnosti znaků:
Standardní metody operátoru dotazu, které seřadí data, jsou uvedeny v následující části.
Metody
| Název metody | Popis | Syntaxe výrazu dotazu jazyka C# | Další informace |
|---|---|---|---|
| SeřaditPodle | Seřadí hodnoty ve vzestupném pořadí. | orderby |
Enumerable.OrderBy Queryable.OrderBy |
| SeřaditSestupně | Seřadí hodnoty v sestupném pořadí. | orderby … descending |
Enumerable.OrderByDescending Queryable.OrderByDescending |
| PakBy | Provede sekundární řazení ve vzestupném pořadí. | orderby …, … |
Enumerable.ThenBy Queryable.ThenBy |
| PotomByDescending | Provede sekundární řazení v sestupném pořadí. | orderby …, … descending |
Enumerable.ThenByDescending Queryable.ThenByDescending |
| Stornovat | Vrátí pořadí prvků v kolekci. | Nevztahuje se. | Enumerable.Reverse Queryable.Reverse |
Poznámka:
Následující příklady v tomto článku používají společné zdroje dat pro tuto oblast.
Každý z nich Student má úroveň známek, primární oddělení a řadu výsledků. A Teacher má City také vlastnost, která identifikuje areál, kde učitel má předměty. A Department má jméno a odkaz na Teacher toho, kdo slouží jako vedoucí oddělení.
Ukázkové datové sady najdete ve zdrojovém úložišti.
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; }
}
Poznámka:
Běžné zdroje dat pro tuto oblast najdete v článku Přehled standardních operátorů dotazů .
Primární vzestupné řazení
Následující příklad ukazuje použití orderby klauzule v dotazu LINQ k seřazení pole učitelů podle jména rodiny ve vzestupném pořadí.
IEnumerable<string> query = from teacher in teachers
orderby teacher.Last
select teacher.Last;
foreach (string str in query)
{
Console.WriteLine(str);
}
Ekvivalentní dotaz napsaný pomocí syntaxe metody je uvedený v následujícím kódu:
IEnumerable<string> query = teachers
.OrderBy(teacher => teacher.Last)
.Select(teacher => teacher.Last);
foreach (string str in query)
{
Console.WriteLine(str);
}
Primární sestupné řazení
Další příklad ukazuje, jak pomocí orderby descending klauzule v dotazu LINQ seřadit učitele podle rodinného jména v sestupném pořadí.
IEnumerable<string> query = from teacher in teachers
orderby teacher.Last descending
select teacher.Last;
foreach (string str in query)
{
Console.WriteLine(str);
}
Ekvivalentní dotaz napsaný pomocí syntaxe metody je uvedený v následujícím kódu:
IEnumerable<string> query = teachers
.OrderByDescending(teacher => teacher.Last)
.Select(teacher => teacher.Last);
foreach (string str in query)
{
Console.WriteLine(str);
}
Sekundární vzestupné řazení
Následující příklad ukazuje použití orderby klauzule v dotazu LINQ k provedení primárního a sekundárního řazení. Učitelé jsou seřazeni primárně podle města a za druhé podle svého rodinného jména, a to jak ve vzestupném pořadí.
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}");
}
Ekvivalentní dotaz napsaný pomocí syntaxe metody je uvedený v následujícím kódu:
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}");
}
Sekundární sestupné řazení
Další příklad ukazuje použití orderby descending klauzule v dotazu LINQ k provedení primárního řazení, vzestupně a sekundárního řazení v sestupném pořadí. Učitelé jsou seřazeni především podle města a za druhé podle svého rodinného jména.
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}");
}
Ekvivalentní dotaz napsaný pomocí syntaxe metody je uvedený v následujícím kódu:
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}");
}