SortedSet(Sıralanmış Düzen) Sınıfı

Eyl 06, 2013

SortedSet(Sıralanmış Düzen) sınıfı Framework 4.0 ile beraber gelen yeniliklerden bir tanesidir ve System.Collections.Generic  kütüphanesi altında bulunur. SortedSet sınıfı verileri sıralı bir şekilde listeye ekleme imkanı sunar.

SortedSed sınıfının metodları aşağıda anlatışmıştır:

  • Add() Metodu: Bu sınıfa veri eklemek için Add() metodu kullanılır. Bu metod bool bir değer dönderir. Eğer eklenecek veri listede varsa metod false(yanlış)dönderir ve veriyi listeye eklemez, yoksa true(doğru) dönderir ve veriyi listeye ekler.
  • GetViewBetween() Metodu: SortedSet sınıfının GetViewBetween() metodu başka bir sınıfa veya diziye belli bir aralıktaki elemanları gönderir.
  • Remove() Metodu: SortedSet sınıfının elemanlarını siler.
  • Union() Metodu: SortedSet sınıflarının elemanlarının birleşimini alır. Aynı elemanlar varsa tekrarlama olmaz.
  • Intersection() Metodu: SortedSet sınıflarının elemanlarının kesişimini alır.
  • Except() Metodu: İki SortedSet sınıfı arasında birincinin diğerinde olmayan elemanlarını alır.

Uygulama:

    private SortedSet<Kisi> ornek;
    public SortedSet<Kisi> Ornek
    {
        get
        {
            if (ornek == null)
                ornek = KE.GetKisi();
            return ornek;
        }
    }

Öncelikle SortedSet<Kisi> tipinde bir nesne yaratılır. Nesne GetKisi() metodu ile doldurulur.

    public SortedSet<Kisi> GetKisi()
    {
        List<Kisi> sonuc = new List<KisiModel.Kisi>();
        var query = from o in Kisi
                          where o.silindi == false
                          select o;
        sonuc = query.ToList();
 
        SortedSet<Kisi> ssk = new SortedSet<Kisi>(new BirimSirala());
        foreach (Kisi item in sonuc)
        {
            ssk.Add(item);
        }
        return ssk;
    }

GetKisi() metodu veritabanından verileri alır ve SortedSet<Kisi> tipindeki listeyi doldurur. BirimSirala sınıfı SortedSet’in sıralama özelliğini belirler.

    public class BirimSirala : IComparer<Kisi>
    {
        int IComparer<Kisi>.Compare(Kisi x, Kisi y)
        {
            return (x.AdSoyad).CompareTo(y.AdSoyad);
        }
    }

BirimSirala sınıfı Kisi sınıfındaki AdSoyad özelliğinin sıralamada belirleyici özellik olmasını sağlar.

     public void lbGonder_Click(object sender, EventArgs e)
    {
        Kisi k = new Kisi(tbAd.Text.Trim(), tbSoyad.Text.Trim(), 
            Convert.ToInt32(tbTelNo.Text.Trim()));

        if (Ornek.Add(k) == true)
        {
            KE.AddToKisi(k);
            KE.SaveChanges();
        }
        VeriBagla();
    }

Kullanıcı veriyi girdikten sonra aynı verinin daha önce girilip girilmediğine bakılır. Aynı veri SortedSet tipindeki Ornek nesnesine daha önce girilmişse Add() metodu false değeri döner ve veritabanına kayıt olmaz. Fakat daha önce girilmemişse Add() metodu true değeri dönecektir ve girilen yeni veri hem Ornek nesnesine hem de veritabanına eklenecektir.

Nesneden bir eleman silineceği zaman Ornek.Remove(k) yazılarak silinir.

Bu uygulamada veriler sırasıyla ad_3 soyad_3, ad_1 soyad_1 ve ad_2 soyad_2 şeklinde eklenmiştir. Fakat veriler okunurken sırası ad_1 soyad_1, ad_2 soyad_2 ve ad_3 soyad_3 şeklinde olmuştur.