引用我之前的问题Compare two complex list objects
我已经实现了IEqualityComparer来检查我的对象列表是否相等,但它似乎不起作用。任何人都可以帮助找到问题
public class Compare : IEqualityComparer<test>
{
public bool Equals(test x, test y)
{
if (x == null || y == null) return false;
bool equals = x.ID == y.ID && x.Name == y.Name && x.Remark == y.Remark
&& x.Details == y.Details;
return equals;
}
public int GetHashCode(test codeh)
{
return (codeh.ID + codeh.Name + codeh.Remark + codeh.Details).GetHashCode();
}
}
我的类对象结构:
[XmlRoot(ElementName = "Details")]
public class Details
{
[XmlElement(ElementName = "time")]
public string time { get; set; }
[XmlElement(ElementName = "duration")]
public string duration { get; set; }
}
[XmlRoot(ElementName = "Remark")]
public class Remark
{
[XmlElement(ElementName = "RemarkText")]
public string RemarkText { get; set; }
[XmlElement(ElementName = "isRemarkVisible")]
public Boolean IsRemarkVisible { get; set; }
}
[XmlRoot(ElementName = "test")]
public class test
{
[XmlElement(ElementName = "ID")]
public string ID { get; set; }
[XmlElement(ElementName = "Name")]
public string Name { get; set; }
public Details Details { get; set; }
[XmlElement(ElementName = "Remark")]
public Remark Remark { get; set; }
}
[XmlRoot(ElementName = "Tests")]
public class Tests
{
[XmlElement(ElementName = "test")]
public test[] test { get; set; }
}
我正在尝试比较这里的列表:
List<test> testOldList = (from test in testPrev.test
where test.ID == testId.ToString()
select test).ToList();
List<test> testNewList = (from test in testnew.test
where test.ID == testId.ToString()
select test).ToList();
var Comparer = new Compare();
bool bothEqual = new HashSet<Record>(testOldList , Comparer).SetEquals(new HashSet<Record>(testNewList , Comparer));