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 ListUyeList() { 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); }
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); }
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.
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 ListUyeList() { 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.
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(); }
Başarılar dilerim.