LINQ sorgularında dinamik sıralama ile kullanıcının isteğine göre ayrı ayrı linq sorguları yazmaktansa tek bir sorguda bunu nasıl yapabiliriz ona değinmek istiyorum. Dilerseniz örnek uygulama üzerinden devam edelim. Örneğimizi Console uygulamasında gerçekleştireceğim. İlk olarak Person adında bir sınıf oluşturarak Id ve Name olmak üzere iki tane property tanımlaması yapalım. Daha sonra main fonksiyonu içine şu kodları yazalım.

static void Main(string[] args)  
{
    var people = new List<Person>
    {
        new Person{Id=1, Name="Betül"}, 
        new Person{Id=3, Name="Ayşe"}, 
        new Person{Id=5, Name="Ahmet"},
        new Person{Id=2, Name="Selim"},    
        new Person{Id=4, Name="Kübra"} 
    };
    Sort(people, p => p.Id);
}

Listemize birkaç tane kişi ekledikten sonra sıralama listemizde sıralama yapan linq sorgusunu yazalım.

public static void Sort<TKey>(List<Person>people,Func<Person,TKey>selector)  
{
            var sortedCollection = from p in people 
                                            orderby selector(p) 
                                            select p; 
           sortedCollection.ToList<Person>().ForEach(p => Console.WriteLine(p.Name));        
}

Bu metodla listemizde istersek Id ye göre istersek de Name'e göre sıralama yaptırabiliriz. Hem de tek bir sorguda:) Örneğimizde ana metotdan Sort metodu Id'ye göre çağırıyoruz ve ekranda bize Id'ye göre sıralanmış olan listedeki elemanların isimlerini göstermiş olduk.

About the Author