Distinct ve Contains
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
-
Distinct sonucunu eşle
- {1,2,2,3}
- {1,2,3}
- {a,a,b}
- {a,b}
- {5,5,5}
- {5}
- {x,y}
- {x,y}
-
Contains çağrısını tamamla
bool has = numbers.____(7);Cevabı göster
bool has = numbers.Contains(7); -
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.