CodeBlanks Logo Icon CodeBlanks

Distinct ve Contains

C# kursu · Orta seviye · Ders 96/116

Distinct ile tekrarları kaldırmayı ve Contains ile varlık kontrolünü öğrenirsin.

Distinct ile tekilleştirme

Distinct metodu, koleksiyondaki yinelenen elemanları çıkarır; her değer yalnızca bir kez görünür. new[] { 1, 2, 2, 3, 3, 3 }.Distinct() sonucu { 1, 2, 3 }'tür. Eşitlik karşılaştırması varsayılan Equals ile yapılır.

Özel bir eşitlik karşılaştırıcı gerekirse District(comparer) aşırı yükü kullanılabilir. Sonuç yine bir IEnumerable<T>'dir; sıra korunur: aynı değerin ilk görüldüğü konum alınır.

Contains ile üyelik kontrolü

Contains metodu, koleksiyonun belirli bir değer içerip içermediğini sorar. numbers.Contains(7) 7 dizide var mı diye bakar, bool döndürür. Bu, numbers.Any(n => n == 7)'ye göre daha kısa ve okunaklıdır.

Contains, referans türlerinde varsayılan olarak Equals kullanır. Özel karşılaştırıcı gerekirse Contains(değer, comparer) aşırı yükü çağrılır. Listelerde Contains doğrusal arama yapar; büyük veri için HashSet<T>'ye üyelik kontrolü daha hızlıdır.

Uygulama Tekil sayıları yazdır

numbers dizisindeki yinelenenleri Distinct ile tekilleştir ve sonucu foreach ile yazdır.

Örnek çözümü göster
numbers.Distinct() ile tekilleştir, foreach ile gez, Console.WriteLine(n) ile yazdır.
Örnek çözüm:
using System;
using System.Linq;

class Program
{
    static void Main()
    {
        int[] numbers = { 1, 2, 2, 3, 3, 3 };
        foreach (var n in numbers.Distinct())
        {
            Console.WriteLine(n);
        }
    }
}

Kendini test et

  1. Distinct sonucunu eşle

    {1,2,2,3}
    {1,2,3}
    {a,a,b}
    {a,b}
    {5,5,5}
    {5}
    {x,y}
    {x,y}
  2. Contains çağrısını tamamla

    bool has = numbers.____(7);
    Cevabı göster
    bool has = numbers.Contains(7);
  3. Distinct ne döndürür?

    new[] { 4, 4, 5, 5 }.Distinct()
    • int (sayı)
    • bool
    • IEnumerable<int>
    • List<int>
    Cevabı göster

    List<int> — Doğru. Distinct, IEnumerable<int> döndürür; ertelenmiş bir sorgudur. ToList ile listeye çevrilebilir.

Orta seviye bölümündeki tüm dersler