List yada benzeri yapılar kullanırken Contains metodu kullanıldığında basit tiplerde problem yaşanmamasına rağmen eğer kendi entity sınıfılarınızı kullanıyorsanız problemle karşılaşabilirsiniz.
Örneğin
public class entMenuGrup
{
public string Adi { get; set; }
public int Zorunlu { get; set; }
}
şeklinde bir sınıfınız var ve bunu bir listeye ekleyeceksiniz. Ancak listede varsa eklemesin istiyorsunuz.
List<entMenuGrup> liste = new List<entMenuGrup>();
foreach (DataRow rw in this.pdtListe.Rows)
{
string adi = rw["MENU_GRUP_ADI"].ToString();
int zorunlu = Helper.ToIntDefault(rw["ZORUNLU"]);
entMenuGrup grup = new entMenuGrup() { Adi = adi, Zorunlu = zorunlu };
if (this.pGruplar.Contains(grup) == false)
{
this.pGruplar.Add(grup);
}
}
burada eğer entMenuGrup sınıfında IEquatable interface i uygulanmamışsa istediğiniz sonucu almanız biraz zor. Sınıfın olması gereken şekli
public class entMenuGrup:IEquatable<entMenuGrup>
{
public string Adi { get; set; }
public int Zorunlu { get; set; }
#region IEquatable<entMenuGrup> Members
public bool Equals(entMenuGrup other)
{
if (this.Adi == other.Adi)
return true;
else
return false;
}
#endregion
}