Adatok rendezése (C#)
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.
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ó |
---|---|---|---|
OrderBy | Növekvő sorrendbe rendezi az értékeket. | orderby |
Enumerable.OrderBy Queryable.OrderBy |
OrderByDescending | 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 |
ThenByDescending | 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 |
A cikkben szereplő alábbi példák a terület közös adatforrásait használják:
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; }
}
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ő.
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}");
}
Lásd még
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: