G'day, 我正在尝试查找SQL Server上的数据与本地存储的数据之间的区别。我将本地数据和SQL数据存储在2个单独的HashSet中。
现在,我可以确认哈希集之间只有1个点的差异,但是当我运行SQLHashSet.ExceptWith(LocalHashSet)
时,它会为我提供完整的哈希集,而不仅仅是一个额外的记录。
我正在使用此自定义类型:
class Client : IEquatable<Client>
{
public string ID { get; set; }
public override int GetHashCode()
{
return StringComparer.InvariantCulture.GetHashCode(this.ID);
}
public override bool Equals(object obj)
{
return Equals(obj as Client);
}
public bool Equals(Client obj)
{
return obj != null && StringComparer.InvariantCulture.Equals(ID, obj.ID);
}
}
我对ExceptWith如何工作理解不正确,还是我需要设计自己的比较列表的方式?
答案 0 :(得分:1)
您的代码应与您实现IEquatable<Client>
并重写GetHashCode
的方式一起使用,因此问题很可能出在您的数据上。您应该确保在将数据加载到HashSet
之前已修剪掉数据,因为"SomeValue"
与"SomeValue "
不匹配。