Bunu daha önce hiç yapmadım, böylece birinin benim sınıfım için Except() ve GetHashCode() öğelerini geçersiz kılmanın ne olduğunu gösterebileceğini umuyordum.Eşitleme yapmak için doğru yol Eşittir() ve GetHashCode()
Sınıfı değiştirmeye çalışıyorum, böylece LINQ Except() yöntemini kullanabilirim.
public class RecommendationDTO{public Guid RecommendationId { get; set; }
public Guid ProfileId { get; set; }
public Guid ReferenceId { get; set; }
public int TypeId { get; set; }
public IList<TagDTO> Tags { get; set; }
public DateTime CreatedOn { get; set; }
public DateTime? ModifiedOn { get; set; }
public bool IsActive { get; set; }
public object ReferencedObject { get; set; }
public bool IsSystemRecommendation { get; set; }
public int VisibilityScore { get; set; }
public RecommendationDTO()
{
}
public RecommendationDTO(Guid recommendationid,
Guid profileid,
Guid referenceid,
int typeid,
IList<TagDTO> tags,
DateTime createdon,
DateTime modifiedon,
bool isactive,
object referencedobject)
{
RecommendationId = recommendationid;
ProfileId = profileid;
ReferenceId = referenceid;
TypeId = typeid;
Tags = tags;
CreatedOn = createdon;
ModifiedOn = modifiedon;
ReferencedObject = referencedobject;
IsActive = isactive;
}
public override bool Equals(System.Object obj)
{
// If parameter is null return false.
if (obj == null)
{
return false;
}
// If parameter cannot be cast to Point return false.
RecommendationDTO p = obj as RecommendationDTO;
if ((System.Object)p == null)
{
return false;
}
// Return true if the fields match:
return (ReferenceId == p.ReferenceId);// && (y == p.y);
}
public bool Equals(RecommendationDTO p)
{
// If parameter is null return false:
if ((object)p == null)
{
return false;
}
// Return true if the fields match:
return (ReferenceId == p.ReferenceId);// && (y == p.y);
}
//public override int GetHashCode()
//{
// return ReferenceId;//^y;
//}}
Ben http://msdn.microsoft.com/en-us/library/ms173147.aspx bir göz almış ama kimse benim kendi örnek içinde bana göster umuyordum.
Herhangi bir yardım için teşekkür ederiz.
böyle classınıza size
Bağlandığınız sayfada: "Devre dışı olmayan türlerde işleç == değerini geçersiz kılmak iyi bir fikir değildir." Except() çalışmasını yapmak için başka ve daha iyi yollar vardır. –
@Henk Holterman, eşitlik operatörünü geçersiz kılar == önerilmez; Override Eşittir seçeneği önerilmez. –
@SouhaiebBesbes - eşittir '==' ve 'Denklemler()' tutmak için önerilir (çok güçlü). –