사용자 지정 컬렉션에서 고유 한 항목 목록을 가져 오려고하지만 내 목록에 중복 된 항목이 계속 표시되므로 비교가 무시되는 것 같습니다. ID와 ID2 값이Linq Distinct가 예상 값을 반환하지 않습니다.
사용자 정의 비교 자 문자열 :
public class UpsellSimpleComparer : IEqualityComparer<UpsellProduct>
{
public bool Equals(UpsellProduct x, UpsellProduct y)
{
return x.Id == y.Id && x.Id2 == y.Id2;
}
public int GetHashCode(UpsellProduct obj)
{
return obj.GetHashCode();
}
}
...
참고 내가 코드를 디버깅하고 난 분명히 내가 비교하고 목록의 값이 동일하다고 볼 수 있습니다
호출 코드 : 대부분의 경우 UpsellProduct
var upsellProducts = (Settings.SelectedSeatingPageGuids.Contains(CurrentItem.ID.ToString())) ?
GetAOSUpsellProducts(selectedProductIds) : GetGeneralUpsellProducts(selectedProductIds);
// we use a special comparer here so that same items are not included
var comparer = new UpsellSimpleComparer();
return upsellProducts.Distinct(comparer);
'string.Equals()'를 사용하여 문자열 값의 동일성을 확인하십시오. –
@ shree.pat18 왜요? (참고 언어 태그는 Java가 아니라 C#입니다.) –
@AlexeiLevenkov 동의하지만, 그렇게하는 것을 선호합니다. C#에서는'=='에 아무런 문제가 없습니다. –