Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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.
Önemli
Bu örnekler bir System.Collections.Generic.IEnumerable<T> veri kaynağı kullanır. Veri kaynaklarını ve System.Linq.IQueryProviderkullanan System.Linq.IQueryable<T> veri kaynakları. İfade ağaçlarının izin verilen C# söz diziminde sınırlamaları vardır. Ayrıca EF CoreIQueryProviderher veri kaynağı daha fazla kısıtlama uygulayabilir. Veri kaynağınızın belgelerine bakın.
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 |
|---|---|---|---|
| Sırala'ya Göre | Değerleri artan düzende sıralar. | orderby |
Enumerable.OrderBy Queryable.OrderBy |
| Azalan Düzenle | Değerleri azalan düzende sıralar. | orderby … descending |
Enumerable.OrderByDescending Queryable.OrderByDescending |
| SonraDan | İkincil sıralamayı artan düzende gerçekleştirir. | orderby …, … |
Enumerable.ThenBy Queryable.ThenBy |
| Azalan Sıraya Göre Ardından | İ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 |
Not
Bu makaledeki aşağıdaki örneklerde bu alan için ortak veri kaynakları kullanılır.
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.
Örnek veri kümesini kaynak depoda bulabilirsiniz.
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; }
}
Not
Standart Sorgu İşleçlerine Genel Bakış makalesinde bu alanın ortak veri kaynaklarına bakabilirsiniz.
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}");
}