14 Kasım 2017 Salı

Linq Equality Metodları

Giriş
Equality (denklik) metodları iki Enumerable listesini dolaşarak birbirleri ile aynı olup olmadıklarını döndürürler.
SequenceEqual Metodu
Açıklaması şöyle
Determines whether two sequences are equal by comparing the elements by using the default equality comparer for their type.
SequenceEqual metodunda sıra ve sayı dikkate alınır. Her iki dizinin de tıpatıp aynı olması gerekir. Eğer bir dizi diğerini içeriyorsa diye kontrol etmek istersek Contains'i kullanabiliriz.
Örnek
İki diziyi kolayca karşılaştırmak için şöyle yaparız.
Array.Sort<int>(input1);
Array.Sort<int>(input2);
bool equal = input1.SequenceEqual(input2);
Örnek
İki dizinin X alanına göre karşılaştırmak için şöyle yaparız.
!list1.Select(x => x.Id).SequenceEqual(list2.Select(x => x.Id));
Örnek
Palindrom kontrolünü şöyle yaparız.
public static bool IsPalindromWith(this string str1, string str2)
{
  if(str1 == null || str2 == null) return false;
  return str1.SequenceEqual(str2.Reverse());
}
IsMatch Extension Metodu
Eğer dizinlerden birisinin null olma ihtimali varsa şöyle yapabiliriz.
public bool IsMatch<T>(IEnumerable<T> a, IEnumerable<T> b)
{
    if (a != null && b != null)
       return a.SequenceEqual(b);

    return (a == null && b == null);
}




Hiç yorum yok:

Yorum Gönder