Bu yazımda projelerimde çok işime yarayan bir LINQ sorgusundan bahsetmek istiyorum. Bir veri kaynağından o kaynaktaki son n tane kaydı çeken bir sorgu yazacağız. Dilerseniz bir Console uygulaması oluşturup örneğimize başlayalım. Örneğimizde bir önceki linq makalemdeki gibi Person tipinde nesneleri barındıran generic list ile çalışacağız. Id ve Name propertylerini içeren Person sınıfını projemize ekleyelim. Daha sonra ana fonksiyonda listeye ekleme yapalı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"}  
      };  
      GetLastN(people,3);
}

Şimdi son n tane kaydı getiren linq sorgumuzu sonucu ekrana yazdıran bir metod içinde yapalım. Metodumuz parametre olarak listeyi ve en son getirelecek kayıt sayısını alır.

public static void GetLastN(List<Person> people, int n)  
{
    IEnumerable<Person> lastN = people.OrderByDescending(c => c.Id).Take(n); 
    foreach (Person person in lastN)         
    {
        Console.WriteLine(person.Name);           
    }
}

Metodumuzun işleme mantığı kendisine parametre olarak gelen listedeki kayıtları önce azalarak sıralar ve sonra Take metodu ile ilk N kaydı alır. Daha sonra kontrol amaçlı olarak foreach ile aldığımız ilk N kaydı ekrana basıyoruz.

About the Author