C# Linq OrderBy Kullanımı

C# programlama dilinde, Linq bileşeni içindeki OrderBy() metodu , belirli bir koleksiyondaki öğeleri belirli bir koşula göre artan şekilde sıralamak için kullanılır. Birden fazla özelliğe göre sıralamak için ThenBy () metodunu OrderBy () 'a bağlayarak yaparız.

Örnek kodu incelemek için ilk önce koleksiyonumuzun (collection) oluşturulduğu Ogrenci ve Sinif class larımızı hazırlayalım.

class Ogrenci 
{
        public int Id { get; set; }
        public string Ad { get; set; }
}

class Sinif 
{
       public readonly List ogrenciler;

       public Sinif() 
       {
            this.ogrenciler = OgrenciYarat().ToList();
       }

       private IEnumerable OgrenciYarat()
       {
            yield return new Ogrenci { Id = 1, Ad = "Ali" };
            yield return new Ogrenci { Id = 2, Ad = "Erdem" };
            yield return new Ogrenci { Id = 3, Ad = "Ayşe" };
            yield return new Ogrenci { Id = 4, Ad = "Lale" };
            yield return new Ogrenci { Id = 5, Ad = "Gül" };
            yield return new Ogrenci { Id = 6, Ad = "Osman" };
            yield return new Ogrenci { Id = 7, Ad = "Irmak" };
            yield return new Ogrenci { Id = 8, Ad = "Tarık" };
            yield return new Ogrenci { Id = 9, Ad = "Osman" };
        }
} 

Oluşturulan sınıflarımızla birlikte OrderBy() 'ı hem yöntem hem de sorgu türündeki örneklerde kullanalım.

Sinif sinif = new Sinif();
var sirala = sinif.ogrenciler.OrderBy(x => x.Ad).ThenBy(x=>x.Id);
var siralaSorgu = from s in sinif.ogrenciler orderby s.Ad, s.Id select s;

foreach (var eleman in sirala) 
{
   Console.WriteLine(eleman.Ad + " " + eleman.Id);
}

Console.WriteLine();

foreach (var eleman in siralaSorgu) 
{
   Console.WriteLine(eleman.Ad + " " + eleman.Id);
}

Console.ReadLine();  

Örneklerimizde koleksiyonumuzu ilk önce "Ad" alanına göre, aynı Ad değerine sahip olanları da kendi içinde "Id" alanına göre sıraladık.

Yöntem türü için "sirala" , sorgu türü için ise "siralaSorgu" değişkenini kullandık. Her 2 tür de bize aynı sonucu verecektir.

Tüm koda aşağıdan ulaşabilirsiniz..

using System;
using System.Collections.Generic;
using System.Linq;
namespace ConsoleApplicationTest
{
    class Program {

        static void Main(string[] args) {
            
            Sinif sinif = new Sinif();
            var sirala = sinif.ogrenciler.OrderBy(x => x.Ad).ThenBy(x=>x.Id);
            var siralaSorgu = from s in sinif.ogrenciler orderby s.Ad, s.Id select s;

            foreach (var eleman in sirala) 
            {
                Console.WriteLine(eleman.Ad + " " + eleman.Id);
            }

            Console.WriteLine();

            foreach (var eleman in siralaSorgu) 
            {
                Console.WriteLine(eleman.Ad + " " + eleman.Id);
            }

            Console.ReadLine();
        }
}


class Ogrenci 
{
        public int Id { get; set; }
        public string Ad { get; set; }
}

class Sinif 
{
        public readonly List ogrenciler;

        public Sinif() 
        {
            this.ogrenciler = OgrenciYarat().ToList();
        }

        private IEnumerable OgrenciYarat()
        {
            yield return new Ogrenci { Id = 1, Ad = "Ali" };
            yield return new Ogrenci { Id = 2, Ad = "Erdem" };
            yield return new Ogrenci { Id = 3, Ad = "Ayşe" };
            yield return new Ogrenci { Id = 4, Ad = "Lale" };
            yield return new Ogrenci { Id = 5, Ad = "Gül" };
            yield return new Ogrenci { Id = 6, Ad = "Osman" };
            yield return new Ogrenci { Id = 7, Ad = "Irmak" };
            yield return new Ogrenci { Id = 8, Ad = "Tarık" };
            yield return new Ogrenci { Id = 9, Ad = "Osman" };
        }
    }
}


C#

İlginizi Çekebilir

C# Bir Sayının Tek Mi Çift Mi Olduğunu Göstermek

C# Dosyanın Klasör Yolunu Alma

C# Enter Tuşuna Basmanın Kontrolü

C# Dictionary'deki Değerler İle Listenin Elemanlarını Eşleştirme ...

C# Tam Sayıdaki Rakamları Ters Sırada Gösterme Örneği