C# 用于比较两个复杂对象的IEqualityComparer

C# 用于比较两个复杂对象的IEqualityComparer,c#,iequalitycomparer,C#,Iequalitycomparer,参考我先前的问题 我已经实现了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.I

参考我先前的问题

我已经实现了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();
    }
} 
我正在尝试比较以下列表:

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));
List testOldList=(来自testPrev.test中的测试
其中test.ID==testId.ToString()
选择test).ToList();
List testNewList=(来自testnew.test中的测试
其中test.ID==testId.ToString()
选择test).ToList();
var Comparer=new Compare();
boolbothequal=newhashset(testOldList,Comparer).SetEquals(newhashset(testNewList,Comparer));

您只给出了部分问题。包括失败的代码。这可能与test.Details没有XmlElement属性有关吗?
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));