Distinct

Mamataliyev Diyorbek

Distinct operatori berilgan to’plamdan elementlari takrorlanmaydigan yangi to’plam hosil qilish uchun ishlatiladi. Yangi hosil qilingan to’plamda ikkita bir xil element bo'lmaydi, to'plam elementlari tartiblanmagan holda bo’ladi.

Masalan, berilgan sonlar to’plamidan 50 dan kichik bo’lgan sonlarni olaylik.

Method Syntax:

using System;
using System.Linq;
namespace NetConsoleApp
{
  class Program
  {
    static void Main(string[] args)
    {
        int[] sonlar = new int[] { 1, 2, 1, 45, 3, 4, 32, 2, 1, 5, 91, 56, 45 };
        var takrorlanmasSonlar = sonlar.Where(e  =>  e < 50).Distinct();
        foreach (var item in takrorlanmasSonlar)
            Console.Write(item + " ");             
        Console.ReadKey();
    }
  }
}

output:

Mixed Syntax:

output:

Yuqoridagi misolda 50 dan kichik sonlar ichida 1, 2, 45 sonlari bir necha marta kelgan bo'lsa ham, Distinct() operatori qo'llangani uchun newSonlar to'plamiga sonlar to'plamidagi barcha elementlardan faqat bittadan olindi.

Endi biror class tipidagi obyektlar ustida Distinct() operatorini qo'llashni ko'raylik. Buning uchun classga IEquatable interfeysidan meros olib, ushbu interfeysga tegishli Equals() va GetHashCode() metodlarini qayta yozib olamiz:

Endi Talaba classi tipida massiv olib, uning ustida Distinct() operatorini qo'llashimiz mumkin. To'liq kod quyidagi ko'rinishda bo'ladi:

output:

Yuqorida obyektlarni taqqoslash uchun Equals() va GetHashCode() metodlarini Talaba classi ichida qayta yozib qo'yaqoldik. Istasangiz bu metodlar bilan taqqoslash uchun yana boshqa class ochib, Talaba classiga bu classdan meros olib qo'yishingiz ham mumkin. (Odatda Comparer so'zi bilan tugaydigan nomdagi classlardan foydalanilardi). Qaysi usuldan foydalanish ixtiyoringiz. Mendan so'rasangiz, ikkinchi usulni maslahat beraman. Keyingi mavzularni shu usulda o'rganamiz.

Last updated

Was this helpful?