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