Linq Min ve Max Metodu Kullanımı


25 Ağustos 2013 Hikmet Okumuş Linq & Lambda

Min ve Max metodları koloksiyon elemanları içinde bulunan en küçük ve en büyük değeri döndürmek için kullanılmaktadır. Örnek için Uye sınıfımızı oluşturalım.
    public class Uye
    {
        public string Ad { get; set; }
        public int Yas { get; set; }

        public Uye() { }
        public Uye(string pAd, int pYas)
        {
            this.Ad = pAd;
            this.Yas = pYas;
        }

        public List UyeList()
        {
            return new Uye[]
            {
                new Uye("Ali", 23),
                new Uye("Yılmaz", 26),
                new Uye("Ahmet", 25),                
                new Uye("Can", 24),
                new Uye("Hakan", 15),
                new Uye("Cem", 21)
            }.ToList();
        }
    }
Min metodu list içerisindeki en küçük değeri döndürecektir.
        private void button1_Click(object sender, EventArgs e)
        {
            var Sonuc = new Uye().UyeList().Min(x => x.Yas);
        }
www.hikmetokumus.com
Max metodu list içerisindeki en büyük değeri döndürecektir.
        private void button1_Click(object sender, EventArgs e)
        {
            var Sonuc = new Uye().UyeList().Max(x => x.Yas);
        }
www.hikmetokumus.com
Min ve Max metodları parametre belirtmedende kullanılmaktadır. Fakat direk kullanımdan önce kısa bir işlemin yapılması gerekmektedir. Önce yapılmadığı zaman nasıl bir hata ile karşılaşılır onu örnekleyelim.
www.hikmetokumus.com
Bu hata bize karşılaştırma yapabilmek için CompareTo metoduna ihtiyacı olduğunu belirtmektedir. CompareTo metodunu eklemek için Uye sınıfımıza IComparable interface' ini implement edelim. Sınıfımızın son hali aşağıdaki gibidir.
    public class Uye : IComparable
    {
        public string Ad { get; set; }
        public int Yas { get; set; }

        public Uye() { }
        public Uye(string pAd, int pYas)
        {
            this.Ad = pAd;
            this.Yas = pYas;
        }

        public List UyeList()
        {
            return new Uye[]
            {
                new Uye("Ali", 23),
                new Uye("Yılmaz", 26),
                new Uye("Ahmet", 25),                
                new Uye("Can", 24),
                new Uye("Hakan", 15),
                new Uye("Cem", 21)
            }.ToList();
        }

        #region IComparable Members

        public int CompareTo(object obj)
        {
            Uye Kontrol = (Uye)obj;
            if (this.Yas > Kontrol.Yas)
                return 1;
            else if (this.Yas < Kontrol.Yas)
                return -1;
            else
                return 0;
        }

        #endregion
    }
Hatayı aldığımız yere tekrar dönersek bu sefer sonucun döndüğü görülecektir.

www.hikmetokumus.com

Aynı sonuç Min metodu içinde geçerli olacaktır. Buraya kadar list içerisinde bulunan elemanların sayısal olarak değerlerini döndürdür. Fakat bize en küçük / büyük list elemanının kendisi gerekiyorsa interface implement olayından sonra sadece metodun adını yazmak yeterli olacaktır.
        private void button1_Click(object sender, EventArgs e)
        {
            var Sonuc = new Uye().UyeList().Min();
        }

www.hikmetokumus.com

www.hikmetokumus.com


Başarılar dilerim.



Yorum Ekle