Sortera data (C#)
En sorteringsåtgärd beställer elementen i en sekvens baserat på ett eller flera attribut. Det första sorteringskriteriet utför en primär sortering av elementen. Genom att ange ett andra sorteringsvillkor kan du sortera elementen i varje primär sorteringsgrupp.
Följande bild visar resultatet av en alfabetisk sorteringsåtgärd på en sekvens med tecken:
Standardmetoderna för frågeoperatorer som sorterar data visas i följande avsnitt.
Metoder
Metodnamn | beskrivning | Syntax för C#-frågeuttryck | Mer information |
---|---|---|---|
OrderBy | Sorterar värden i stigande ordning. | orderby |
Enumerable.OrderBy Queryable.OrderBy |
OrderByDescending | Sorterar värden i fallande ordning. | orderby … descending |
Enumerable.OrderByDescending Queryable.OrderByDescending |
ThenBy | Utför en sekundär sortering i stigande ordning. | orderby …, … |
Enumerable.ThenBy Queryable.ThenBy |
ThenByDescending | Utför en sekundär sortering i fallande ordning. | orderby …, … descending |
Enumerable.ThenByDescending Queryable.ThenByDescending |
Återför | Ändrar ordningen på elementen i en samling. | Ej tillämpbart. | Enumerable.Reverse Queryable.Reverse |
I följande exempel i den här artikeln används vanliga datakällor för det här området:
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; }
}
Var Student
och en har en betygsnivå, en primär avdelning och en serie poäng. En Teacher
har också en City
egenskap som identifierar det campus där läraren har klasser. A Department
har ett namn och en referens till en Teacher
som fungerar som avdelningschef.
Primär stigande sortering
I följande exempel visas hur du använder orderby
-satsen i en LINQ-fråga för att sortera matrisen med lärare efter familjenamn i stigande ordning.
IEnumerable<string> query = from teacher in teachers
orderby teacher.Last
select teacher.Last;
foreach (string str in query)
{
Console.WriteLine(str);
}
Motsvarande fråga som skrivits med hjälp av metodsyntaxen visas i följande kod:
IEnumerable<string> query = teachers
.OrderBy(teacher => teacher.Last)
.Select(teacher => teacher.Last);
foreach (string str in query)
{
Console.WriteLine(str);
}
Primär fallande sortering
I nästa exempel visas hur du använder orderby descending
-satsen i en LINQ-fråga för att sortera lärarna efter familjenamn i fallande ordning.
IEnumerable<string> query = from teacher in teachers
orderby teacher.Last descending
select teacher.Last;
foreach (string str in query)
{
Console.WriteLine(str);
}
Motsvarande fråga som skrivits med hjälp av metodsyntaxen visas i följande kod:
IEnumerable<string> query = teachers
.OrderByDescending(teacher => teacher.Last)
.Select(teacher => teacher.Last);
foreach (string str in query)
{
Console.WriteLine(str);
}
Sekundär stigande sortering
I följande exempel visas hur du använder orderby
-satsen i en LINQ-fråga för att utföra en primär och sekundär sortering. Lärarna sorteras främst efter stad och i andra hand efter deras efternamn, båda i stigande ordning.
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}");
}
Motsvarande fråga som skrivits med hjälp av metodsyntaxen visas i följande kod:
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är fallande sortering
Nästa exempel visar hur du använder orderby descending
-satsen i en LINQ-fråga för att utföra en primär sortering, i stigande ordning och en sekundär sortering, i fallande ordning. Lärarna sorteras främst efter stad och i andra hand efter deras efternamn.
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}");
}
Motsvarande fråga som skrivits med hjälp av metodsyntaxen visas i följande kod:
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}");
}
Se även
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för