다음과 같은 방법으로 연산자를 오버로드하면 C# 코드에서 완벽하게 작동합니다. **Linq 쿼리에서 연산자 오버로드가 발생했습니다.
public class HostCode
{
public string Code { get; set; }
public string Name { get; set; }
public static bool operator ==(HostCode hc1, HostCode hc2)
{
return hc1.Code == hc2.Code;
}
public static bool operator !=(HostCode hc1, HostCode hc2)
{
return true;
}
}**
난 HostCode라는 CLA를 있고 이는 2 오버 방법 (용 '=='를위한 것이고 다른 하나는 '! =') 포함하고, I는 다음 호스트 코드의 집합을 만들어 .
**var hostCodes = new List<HostCode>()
{
new HostCode(){ Code = "1", Name = "sreekanth" },
new HostCode(){ Code = "2", Name = "sajan" },
new HostCode(){ Code = "3", Name = "mathew" },
new HostCode(){ Code = "4", Name = "sachin" }
};**
***var hc = new HostCode() { Code = "1", Name = "sreekanth" };***
***var isEq = hostCodes[1] == hc;***
하는 I 위에서처럼 애 쓰고 때 HostCode 클래스 소성 각 조작 방법 (이 경우에는 "=="이다). 그래서 내가 거기에 내 사용자 지정 논리를 쓸 수 있습니다.
그러나 Iam이 아래와 같이 Linq 쿼리를 시도하면 실행되지 않습니다. 그러나이 경우에도 동일한 유형의 객체 2 개를 비교합니다.
**var isEqual = from obj in hostCodes where (HostCode)obj == (HostCode)hc select obj;**
아무도 내가 Linq 쿼리에 의해 2 개체를 비교할 수있는 방법을 찾을 수 있습니까? "어떻게 일이 그들을 비교해야한다"질문부터
당신의 대답을 여기로 이동 : 당신이 개체에 그리고 ... 당신은 어떤 특정 평등을 사용하려는 비 포함와 같은 일부 기능에 약간의 평등이있을 때
그리고 IEqualityComparer 사용법은 – jjnguy
여기서 hc는 – msarchet