Mengurutkan Data (C#)

Operasi pengurutan mengurutkan elemen urutan berdasarkan satu atau beberapa atribut. Kriteria pengurutan pertama melakukan pengurutan utama pada elemen. Dengan menentukan kriteria pengurutan kedua, Anda dapat mengurutkan elemen dalam setiap grup pengurutan utama.

Ilustrasi berikut menunjukkan hasil operasi pengurutan abjad pada urutan karakter:

Grafik yang memperlihatkan operasi pengurutan alfabet.

Metode operator kueri standar yang mengurutkan data dicantumkan di bagian berikut.

Metode

Nama Metode Deskripsi Sintaksis Ekspresi Kueri C# Informasi Selengkapnya
OrderBy Mengurutkan nilai dalam urutan naik. orderby Enumerable.OrderBy

Queryable.OrderBy
OrderByDescending Mengurutkan nilai dalam urutan menurun. orderby … descending Enumerable.OrderByDescending

Queryable.OrderByDescending
ThenBy Melakukan pengurutan sekunder dalam urutan naik. orderby …, … Enumerable.ThenBy

Queryable.ThenBy
ThenByDescending Melakukan pengurutan sekunder dalam urutan menurun. orderby …, … descending Enumerable.ThenByDescending

Queryable.ThenByDescending
Balik Membalikkan urutan elemen dalam kumpulan. Tidak berlaku. Enumerable.Reverse

Queryable.Reverse

Contoh berikut dalam artikel ini menggunakan sumber data umum untuk area ini:

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; }
}

Masing-masing Student memiliki tingkat kelas, departemen utama, dan serangkaian skor. A Teacher juga memiliki City properti yang mengidentifikasi kampus tempat guru mengadakan kelas. A Department memiliki nama, dan referensi untuk siapa Teacher yang menjabat sebagai kepala departemen.

Pengurutan Naik Utama

Contoh berikut menunjukkan cara menggunakan orderby klausa dalam kueri LINQ untuk mengurutkan array guru menurut nama keluarga, dalam urutan naik.

IEnumerable<string> query = from teacher in teachers
                            orderby teacher.Last
                            select teacher.Last;

foreach (string str in query)
{
    Console.WriteLine(str);
}

Kueri setara yang ditulis menggunakan sintaks metode diperlihatkan dalam kode berikut:

IEnumerable<string> query = teachers
    .OrderBy(teacher => teacher.Last)
    .Select(teacher => teacher.Last);

foreach (string str in query)
{
    Console.WriteLine(str);
}

Pengurutan Menurun Utama

Contoh berikutnya menunjukkan cara menggunakan orderby descending klausul dalam kueri LINQ untuk mengurutkan guru menurut nama keluarga, dalam urutan menurut.

IEnumerable<string> query = from teacher in teachers
                            orderby teacher.Last descending
                            select teacher.Last;

foreach (string str in query)
{
    Console.WriteLine(str);
}

Kueri setara yang ditulis menggunakan sintaks metode diperlihatkan dalam kode berikut:

IEnumerable<string> query = teachers
    .OrderByDescending(teacher => teacher.Last)
    .Select(teacher => teacher.Last);

foreach (string str in query)
{
    Console.WriteLine(str);
}

Pengurutan Naik Sekunder

Contoh berikut menunjukkan cara menggunakan orderby klausa dalam kueri LINQ untuk melakukan pengurutan primer dan sekunder. Para guru diurutkan terutama berdasarkan kota dan sekunder berdasarkan nama keluarga mereka, keduanya dalam urutan naik.

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}");
}

Kueri setara yang ditulis menggunakan sintaks metode diperlihatkan dalam kode berikut:

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}");
}

Pengurutan Menurun Sekunder

Contoh berikutnya menunjukkan cara menggunakan klausul orderby descending dalam kueri LINQ untuk melakukan pengurutan primer, dalam urutan naik, dan pengurutan sekunder, dalam urutan menurun. Guru diurutkan terutama berdasarkan kota dan sekunder berdasarkan nama keluarga mereka.

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}");
}

Kueri setara yang ditulis menggunakan sintaks metode diperlihatkan dalam kode berikut:

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}");
}

Lihat juga