LINQ-Son N Kaydı Getirme
24 Ağustos,2009

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)

{

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

      };  

          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 = (from p in people    

                                                          select p).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(int n) fonksiyonu ile ilk n kaydı alır.Daha sonra kontrol amaçlı olarak foreach ile aldığımız ilk  n kaydı ekrana basıyoruz

Teşekkürler.

Etiketler: ,
Kategoriler: C#

Speech Synthesizer Kullanımı
20 Ağustos,2009

Bugün  birkaç satır kod ile bazı uygulamalarımızda kullanabileceğimiz ve C# 3.0’ın özelliklerinden yararlanarak Extension Method’larla ilgili bir örnek paylaşacağım.

txtWord.Text=”Silverlight”;

txtWord.Text.Speak();

Yukarıdaki iki satırlık kodu çalışır kılmak mümkün müdür acaba?Tabii ki mümkün:)İlk olarak extension method için static bir class tanımlamak ve bu static class’ın içine static olan extension metodumuzu tanımlamalıyız.Ama önce System.Speech.Synthesis namespace’ini projemize referans olarak eklemeliyiz.Referansımızı ekledikten sonra  SpeechSynthesizer’ın bir instance alarak bu nesne üzerinden Speak metoduna ulaşabiliriz.   

public static class Speak   

{      

     public static void Speak(this string text)     

     {        

            SpeechSynthesizer synth = new SpeechSynthesizer();  

            synth.Speak(text);     

     }

  }

Burada diğer önemli bir nokta metoda gelen parametre tipinden önceki  this anahtar kelimesidir.Extension Method tanımlanırken this anahtar kelimesi kullanılır.Bu keyword aslında kullanım şeklinden de anlaşılacağı gibi çağrıldığı nesne üzerinden işlem yapabilmek için kullanılır.Örnekte de göreceğiniz gibi tekrar parametre göndermeye gerek kalmamıştır.Artık Extension metodumuz hazır,kullanmak içinse bir winform uygulaması açıp forma bir textbox ve bir buton koyun.Butona tıklandığında ise textboxa yazılan yazıyı seslendirsin. 

private void button1_Click(object sender, EventArgs e) 

{    

    textBox1.Text.Speak(); 

}

Teşekkürler. 

Etiketler: ,
Kategoriler: C#

LINQ-Dinamik Sıralama
15 Ağustos,2009

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.

Kategoriler: C#

Microsoft'un Sertifikasyon Oyunu:Are You Certifiable?
10 Ağustos,2009

Merhabalar.Uzun zamandır bloğuma yazı yazamadığımın farkındayım.Stajdı projeydi derken vakit kalmıyor:)Bu yoğun temponun arasına belki küçük bir şeyler sıkıştırabilir.Uzun zamadır oynadığım ve bahsetmeyi unuttuğum Microsoft'un Silverlight ile geliştirmiş olduğu Developer ve IT Professional olarak farklı iki kategoride sorular bulunan bir sertifikasyon oyunu olan Are You Certifiable? isimli oyundan bahsetmek istiyorum.Sertifika almak istiyorsanız ya da kendinizi test etmek istiyorsanız tavsiyem önce bu oyunu oynamanız:)Gerçekten tasarım olarak çok hoş ve eğlenceli bir oyun.Oyuna bu adresten ulaşabilirsiniz.http://www.areyoucertifiable.com .

Kategoriler: Genel