如果我試圖做到這一點 - 我的電話oldList.Except(newList)似乎返回所有項目 - 沒有比較工作。爲什麼不工作時,我已經定義IEqualityComparer <T>
List<ControlAndTopLevelControlPair> oldOnly = oldList.Except(newList).ToList();
public class ControlAndTopLevelControlPair : IEqualityComparer<ControlAndTopLevelControlPair>
{
public int CONTROLOI { get; set; }
public int VIEWCONTROL_OI { get; set; }
public bool Equals(ControlAndTopLevelControlPair x, ControlAndTopLevelControlPair y)
{
return x.CONTROLOI.Equals(y.CONTROLOI) && x.VIEWCONTROL_OI.Equals(y.VIEWCONTROL_OI);
}
public int GetHashCode(ControlAndTopLevelControlPair obj)
{
return obj.CONTROLOI.GetHashCode()^obj.VIEWCONTROL_OI.GetHashCode();
}
但是如果我定義了一個自定義比較,則以下工作:
List<ControlAndTopLevelControlPair> oldOnly = oldList.Except(newList, new ControlAndTopLevelControlPairComparer()).ToList();
public class ControlAndTopLevelControlPairComparer : IEqualityComparer<ControlAndTopLevelControlPair>
{
public bool Equals(ControlAndTopLevelControlPair x, ControlAndTopLevelControlPair y)
{
return x.CONTROLOI.Equals(y.CONTROLOI) && x.VIEWCONTROL_OI.Equals(y.VIEWCONTROL_OI);
}
public int GetHashCode(ControlAndTopLevelControlPair obj)
{
return obj.CONTROLOI.GetHashCode()^obj.VIEWCONTROL_OI.GetHashCode();
}
}
從OP代碼複製粘貼的另一個產品? 'IEqualityComparer ...'不需要,否則你必須添加實現該接口的代碼。 –