Verileri Sıralama (C#)
Sıralama işlemi, bir dizinin öğelerini bir veya daha fazla öznitelik temelinde sıralar. İlk sıralama ölçütü, öğeler üzerinde birincil sıralama gerçekleştirir. İkinci bir sıralama ölçütü belirterek, her birincil sıralama grubundaki öğeleri sıralayabilirsiniz.
Aşağıdaki çizimde, bir karakter dizisinde alfabetik sıralama işleminin sonuçları gösterilmektedir:
Verileri sıralayan standart sorgu işleci yöntemleri aşağıdaki bölümde listelenmiştir.
Yöntemler
Yöntem Adı | Açıklama | C# Sorgu İfadesi Söz Dizimi | Daha Fazla Bilgi |
---|---|---|---|
OrderBy | Değerleri artan düzende sıralar. | orderby |
Enumerable.OrderBy Queryable.OrderBy |
Orderbydescending | Değerleri azalan düzende sıralar. | orderby … descending |
Enumerable.OrderByDescending Queryable.OrderByDescending |
Thenby | İkincil sıralamayı artan düzende gerçekleştirir. | orderby …, … |
Enumerable.ThenBy Queryable.ThenBy |
Thenbydescending | İkincil sıralamayı azalan düzende gerçekleştirir. | orderby …, … descending |
Enumerable.ThenByDescending Queryable.ThenByDescending |
Ters kaydet | Koleksiyondaki öğelerin sırasını tersine çevirir. | Uygulanamaz. | Enumerable.Reverse Queryable.Reverse |
Bu makaledeki aşağıdaki örneklerde bu alan için ortak veri kaynakları kullanılır:
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; }
}
Her Student
birinin bir not düzeyi, bir birincil bölüm ve bir dizi puanı vardır. Ayrıca, Teacher
öğretmenin ders aldığı kampüsü tanımlayan bir City
özelliği de vardır. A'nın Department
bir adı ve bölüm başkanı olarak görev yapan bir Teacher
kişi için bir referansı vardır.
Birincil Artan Sıralama
Aşağıdaki örnekte, öğretmen dizisini orderby
aile adına göre artan düzende sıralamak için LINQ sorgusunda yan tümcesinin nasıl kullanılacağı gösterilmektedir.
IEnumerable<string> query = from teacher in teachers
orderby teacher.Last
select teacher.Last;
foreach (string str in query)
{
Console.WriteLine(str);
}
Yöntem söz dizimi kullanılarak yazılan eşdeğer sorgu aşağıdaki kodda gösterilir:
IEnumerable<string> query = teachers
.OrderBy(teacher => teacher.Last)
.Select(teacher => teacher.Last);
foreach (string str in query)
{
Console.WriteLine(str);
}
Birincil Azalan Sıralama
Sonraki örnekte, öğretmenleri aile adına göre azalan düzende sıralamak için LINQ sorgusundaki yan tümcesinin nasıl kullanılacağı orderby descending
gösterilmektedir.
IEnumerable<string> query = from teacher in teachers
orderby teacher.Last descending
select teacher.Last;
foreach (string str in query)
{
Console.WriteLine(str);
}
Yöntem söz dizimi kullanılarak yazılan eşdeğer sorgu aşağıdaki kodda gösterilir:
IEnumerable<string> query = teachers
.OrderByDescending(teacher => teacher.Last)
.Select(teacher => teacher.Last);
foreach (string str in query)
{
Console.WriteLine(str);
}
İkincil Artan Sıralama
Aşağıdaki örnekte, birincil ve ikincil sıralama gerçekleştirmek için LINQ sorgusunda yan tümcesinin orderby
nasıl kullanılacağı gösterilmektedir. Öğretmenler, her ikisi de artan düzende öncelikle şehre ve ikincil olarak aile adlarına göre sıralanır.
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}");
}
Yöntem söz dizimi kullanılarak yazılan eşdeğer sorgu aşağıdaki kodda gösterilir:
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}");
}
İkincil Azalan Sıralama
Sonraki örnekte, linq sorgusundaki yan tümcesinin orderby descending
artan düzende ve ikincil sıralamayı azalan düzende gerçekleştirmek için nasıl kullanılacağı gösterilmektedir. Öğretmenler öncelikle şehre ve ikincil olarak aile adlarına göre sıralanır.
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}");
}
Yöntem söz dizimi kullanılarak yazılan eşdeğer sorgu aşağıdaki kodda gösterilir:
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}");
}
Ayrıca bkz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin