Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A rendezési művelet egy sorozat elemeit egy vagy több attribútum alapján rendezi. Az első rendezési feltétel elsődleges rendezést végez az elemeken. Egy második rendezési feltétel megadásával rendezheti az egyes elsődleges rendezési csoportok elemeit.
Fontos
Ezek a minták adatforrást System.Collections.Generic.IEnumerable<T> használnak. Adatforrások és kifejezésfák használata alapján.System.Linq.IQueryProviderSystem.Linq.IQueryable<T> A kifejezésfák korlátozottan használhatják az engedélyezett C# szintaxist. Emellett minden adatforrás IQueryProvider , például az EF Core további korlátozásokat is alkalmazhat. Ellenőrizze az adatforrás dokumentációját.
Az alábbi ábra egy betűrendes rendezési művelet eredményeit mutatja be egy karaktersorozaton:
Az adatokat rendező szabványos lekérdezésoperátor-metódusok a következő szakaszban találhatók.
Metódusok
| Metódus neve | Leírás | C# lekérdezési kifejezés szintaxisa | További információ |
|---|---|---|---|
| RendezésAlapján | Növekvő sorrendbe rendezi az értékeket. | orderby |
Enumerable.OrderBy Queryable.OrderBy |
| CsökkenőSorrendbeRendezés | Csökkenő sorrendbe rendezi az értékeket. | orderby … descending |
Enumerable.OrderByDescending Queryable.OrderByDescending |
| ThenBy | Másodlagos rendezést végez növekvő sorrendben. | orderby …, … |
Enumerable.ThenBy Queryable.ThenBy |
| MajdCsökkenőSorrendben | Másodlagos rendezést végez csökkenő sorrendben. | orderby …, … descending |
Enumerable.ThenByDescending Queryable.ThenByDescending |
| Megfordítás | Megfordítja a gyűjtemény elemeinek sorrendjét. | Nem alkalmazható. | Enumerable.Reverse Queryable.Reverse |
Feljegyzés
A cikkben szereplő alábbi példák a terület közös adatforrásait használják.
Mindegyiknek Student van egy osztályszintje, egy elsődleges osztálya és egy sor pontszáma. Az A-nek Teacher is van egy City tulajdonsága, amely azonosítja azt a campust, ahol a tanár órákat tart. Az A-nek Department van egy neve, és egy olyan személyre Teacher való hivatkozás, aki az osztályvezető.
A mintaadatkészlet a forrásadattárban található.
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; }
}
Feljegyzés
A terület gyakori adatforrásai a Standard lekérdezési operátorok áttekintése című cikkben találhatóak.
Elsődleges növekvő rendezés
Az alábbi példa bemutatja, hogyan használható a záradék egy orderby LINQ-lekérdezésben a tanárok tömbjének családnév szerinti rendezésére növekvő sorrendben.
IEnumerable<string> query = from teacher in teachers
orderby teacher.Last
select teacher.Last;
foreach (string str in query)
{
Console.WriteLine(str);
}
A metódusszintaxissal írt egyenértékű lekérdezés a következő kódban jelenik meg:
IEnumerable<string> query = teachers
.OrderBy(teacher => teacher.Last)
.Select(teacher => teacher.Last);
foreach (string str in query)
{
Console.WriteLine(str);
}
Elsődleges csökkenő rendezés
A következő példa bemutatja, hogyan használható a záradék egy orderby descending LINQ-lekérdezésben a tanárok családnév szerinti rendezésére csökkenő sorrendben.
IEnumerable<string> query = from teacher in teachers
orderby teacher.Last descending
select teacher.Last;
foreach (string str in query)
{
Console.WriteLine(str);
}
A metódusszintaxissal írt egyenértékű lekérdezés a következő kódban jelenik meg:
IEnumerable<string> query = teachers
.OrderByDescending(teacher => teacher.Last)
.Select(teacher => teacher.Last);
foreach (string str in query)
{
Console.WriteLine(str);
}
Másodlagos növekvő rendezés
Az alábbi példa bemutatja, hogyan használható a záradék egy orderby LINQ-lekérdezésben elsődleges és másodlagos rendezés végrehajtására. A tanárok elsősorban város, másodsorban pedig családnév szerint vannak rendezve, mind növekvő sorrendben.
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}");
}
A metódusszintaxissal írt egyenértékű lekérdezés a következő kódban jelenik meg:
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}");
}
Másodlagos csökkenő rendezés
A következő példa bemutatja, hogyan használható a záradék egy orderby descending LINQ-lekérdezésben az elsődleges rendezés, növekvő sorrendben és másodlagos rendezés csökkenő sorrendben történő végrehajtására. A tanárok elsősorban város, másodsorban pedig családnév szerint vannak rendezve.
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}");
}
A metódusszintaxissal írt egyenértékű lekérdezés a következő kódban jelenik meg:
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}");
}