这个问题已经在这里有了答案 :
Equals和GetHashCode的最佳策略是什么? (5个答案)
7年前关闭。
我之前从未真正做过此事,因此我希望有人可以向我展示为我的类实现Except()和GetHashCode()重写的正确方法。
我试图修改该类,以便可以使用LINQ Except()方法。
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; //}}
我看过http://msdn.microsoft.com/zh- cn/library/ms173147.aspx,但我希望有人可以在我自己的示例中向我展示。
任何帮助,将不胜感激。
谢谢
您可以像这样在类上重写Equals()和GetHashCode():
public override bool Equals(object obj) { var item = obj as RecommendationDTO; if (item == null) { return false; } return this.RecommendationId.Equals(item.RecommendationId); } public override int GetHashCode() { return this.RecommendationId.GetHashCode(); }