Xo’sh do’stlar Linqda yana bir aggregat operator hisoblangan Max() va Min() metodlari mavjud. Ushbu metodlar sezib turganingizdek to’plamdagi eng katta va eng kichik raqamli elementni qaytaradi.
Keling bir to’plamda bu metodlarni ko’rib chiqamiz (quyidagi keltiriladigan misollarda Max() metodidan foydalaniladi, Min() metodini Max() metodi o’rnida o’zingiz ishlatib ko’rishingizni tavsiya beraman, ular bir xil ishlaydi):
Biz Max() metodidan ismlarni ham solishtirib eng uzunini chaqirib olishimiz mumkin. Buning uchun yuqoridagi murakkabroq misolimizning Student sinf(class)iga IComparable interfeysini qo’llab ko’ramiz:
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;namespacemaxMin{classProgram {staticvoidMain() { // yuqorida keltirilgan studentList to'plamini chaqirib olingvar maxValue =studentList.Max();Console.WriteLine("Ismi eng uzun o'quvchi: {0}",maxValue.StudentName); } }classStudent:IComparableStudent> {publicint StudentID { get; set; }publicstring StudentName { get; set; }publicint Age { get; set; }publicintCompareTo(Student other) {if(this.StudentName.Length>other.StudentName.Length)return1;return0; } }}
Output :
Ismi eng uzun o'quvchi: MuhammadKarim
Mana Max() metodi orqali ismlarni solishtirishni ham o’rganib oldingiz. Biroq bu sizga biroz qiyindek ko’rinishi mumkin. Keling endi buni osonlashtiramiz, qiyinidan — osoniga degandek. Biz yuqoridagi masalani hal qilishimiz uchun .Net 6 dan boshlab yangilik sifatida qo’shilgan MaxBy() (MinBy() ham mavjud) metodidan foydalanamiz. Bunda biz hech qanday interfeysdan foydalanmaymiz (baraka topishsin). Keling buni ham bir misolda ko’rib chiqamiz:
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;namespacemaxByMinBy{classProgram {staticvoidMain() { // yuqorida keltirilgan studentList to'plamini chaqirib olingvar maxValue =studentList.MaxBy(s=>s.StudentName.Length);Console.WriteLine("Ismi eng uzun o'quvchi: {0}",maxValue.StudentName); } }classStudent {publicint StudentID { get; set; }publicstring StudentName { get; set; }publicint Age { get; set; } }}
Ushbu mavzu biroz kengayib ketdi, biroq tushunarli bo’ldi deb o’ylayman. Agar foydasi tekkan bo’lsa xursandman.