C# Linq OrderByDescending Kullanımı

C# programlama dilinde, Linq bileşeni içindeki OrderByDescending() metodu , belirli bir koleksiyondaki öğeleri belirli bir koşula göre tersten sıralamak (Z-A veya 9-0) için kullanılır. Birden fazla özelliğe göre tersten sıralamak için ThenByDescending() metodunu OrderByDescending() 'e 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" };
            yield return new Ogrenci { Id = 10, Ad = "Elif" };
        }
}

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


Sinif sinif = new Sinif();var siralaTersten = sinif.ogrenciler
                  .OrderByDescending(x => x.Ad).ThenByDescending(x=>x.Id);
var siralaTerstenSorgu = from s in sinif.ogrenciler orderby s.Ad descending, s.Id descending select s;

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

Console.WriteLine();

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

Console.ReadLine();

Örneklerimizde koleksiyonumuzu ilk önce "Ad" alanına göre (Z-A), aynı Ad değerine sahip olanları da kendi içinde "Id" alanına göre ters biçimde (9-0) sıraladık ve ekrana yazdırdık.

Yöntem türü için "siralaTersten" , sorgu türü için ise "siralaTerstenSorgu" 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 siralaTersten = sinif.ogrenciler
            .OrderByDescending(x => x.Ad).ThenByDescending(x=>x.Id);

            var siralaTerstenSorgu = from s in sinif.ogrenciler
                                     orderby s.Ad descending, s.Id descending select s;

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

            Console.WriteLine();

            foreach (var eleman in siralaTerstenSorgu) 
            {
                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" };
            yield return new Ogrenci { Id = 10, Ad = "Elif" };
        }
    }
}


C#

İlginizi Çekebilir

C# Rastgele Sayılardan En Büyük ve En Küçüğü Bulma Örneği

C# Dikdörtgenin Alanını Hesaplama Örneği

C# Bir Derecenin Tanjantını Bulma

C# DataRow Remove ve Delete Arasındaki Fark

C# Where Kullanımı