dtoオブジェクトの値を比較する場合はEquals
、GetHashCode
メソッドをオーバーライドする必要があります。
たとえば、クラスが与えられた場合:
public class DTOPersona
{
public string Name { get; set; }
public string Address { get; set; }
}
同じ名前(ただしアドレスではない)のDTOPersonaクラスの2つのオブジェクトが同等のオブジェクト(つまり同じ人物)であると考える場合、コードは次のようになります。
public class DTOPersona
{
public string Name { get; set; }
public string Address { get; set; }
protected bool Equals(DTOPersona other)
{
return string.Equals(Name, other.Name);
}
public override bool Equals(object obj)
{
if (ReferenceEquals(null, obj))
{
return false;
}
if (ReferenceEquals(this, obj))
{
return true;
}
if (obj.GetType() != this.GetType())
{
return false;
}
return Equals((DTOPersona) obj);
}
public override int GetHashCode()
{
return (Name != null ? Name.GetHashCode() : 0);
}
}