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)  
{
       List<Person> 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.Hemde tek bir sorguda:)Örneğimizde ana fonksiyondan Sort fonksiyonunu ID ye göre çağırıyoruz ve ekranda bize ID’ye göre sıralanmış olan listedeki elemanların isimlerini ekranda göstermiş olduk.

Teşekkürler.

About the Author