Linq ThenByDescending Kullanımı

Posted by

Merhaba arkadaşlar, bu yazımda sizlere Linq ThenByDescending Kullanımı konusundan bahsedeceğim.

Linq ile sıralama işlemlerini OrderBy ya da OrderByDescending metodunu kullanarak yapabiliyorduk. Daha önceki yazılarımda bu işlemlerden bahsetmiştim. Şimdi ise ThenBy ve ThenByDescending metotlarımızı kullanmayı göstermek istiyorum. Diyelim ki OrderBy metotlarını kullanarak bir sıralama işlemi yaptık ve tekrardan başka bir alan üzerinde de sıralama işlemi sağlamak istiyoruz. Bu işlemi gerçekleştirmek için de ThenBy ve ThenByDescending metotlarımızı kullanabiliyoruz. Örnek kod üzerinden işlemlerimizi gerçekleştirelim.

Öncelikle bir Product nesnesi oluşturuyoruz.

public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
}

Product nesnemizi oluşturduktan sonra örnek bir liste oluşturuyoruz.

List<Product> products = new List<Product>()
{
    new Product { Id = 1, Name = "Bilgisayar 1", Price = 5 },
    new Product { Id = 2, Name = "Bilgisayar 2", Price = 2 },
    new Product { Id = 3, Name = "Bilgisayar 2", Price = 3 },
    new Product { Id = 4, Name = "Telefon 2", Price = 10 },
    new Product { Id = 5, Name = "Telefon 1", Price = 1 }
};

Örnek listemizi de oluşturduktan sonra OrderBy ve ThenByDescending metodumuzu kullanarak sıralama işlemini gerçekleştiriyoruz.

List<Product> results = products.OrderBy(x => x.Name).ThenByDescending(x => x.Price).ToList();

Öncelikle OrderBy metodu ile Ürün Adı’na göre bir sıralama (A-Z) işlemi gerçekleştirdik ve sonrasında da ThenByDescending metodunu kullanarak Ürün Fiyatı’na göre bir sıralama(Z-A) işlemi yaptırdık.

Son olarak bu verileri ekrana yazdıralım.

foreach (var item in results)
{
   Console.WriteLine($"Ürün Adı: {item.Name} - Ürün Fiyatı: {item.Price}");
}

Sıralama işlemlerini sağladıktan sonra çıkan ekran görüntüsü aşağıdaki gibi olacaktır.

Umarım faydalı olur 🙂

Bir sonraki yazıda görüşmek üzere…

Leave a Reply

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir