전 실제로이 작업을 수행 한 적이 없으므로 누군가 내게 Except() 및 GetHashCode()를 재정의 한 클래스를 표시 할 수 있기를 바랍니다.올바른 방법으로 Equals() 및 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/en-us/library/ms173147.aspx을 살펴본했지만 나는 누군가가 내 자신의 예에서 저를 보여줄 수 기대했다.
도움을 주시면 감사하겠습니다.
은 다음과 같이 클래스에 당신에게
연결된 페이지에서 "불변 타입에서 연산자 ==를 재정의하는 것은 좋지 않습니다." Except() 작업을 수행하는 다른 좋은 방법이 있습니다. –
@Henk Holterman 무시 우선 순위 연산자 ==는 권장하지 않습니다. 같음 오버라이드는 권장되지 않습니다. –
@SouhaiebBesbes -'=='와'Equals()'를 동기화 상태로 유지하는 것이 좋습니다. –