使用JTokenEqualityComparer时如何忽略大小写?
JTokenEqualityComparer comp = new JTokenEqualityComparer();
// arrange
var obj1 = new JObject();
obj1.Add("First Name", "foo");
obj1.Add("Last Name", "bar");
var obj2 = new JObject();
obj2.Add("First Name", "Foo");
obj2.Add("Last Name", "Bar");
// act
var hashCode1 = comp.GetHashCode(obj1);
var hashCode2 = comp.GetHashCode(obj2);
// assert
Assert.Equal(hashCode1, hashCode2);
更新1
我想比较两个JObjects。这些对象可能是复杂的深层对象。 JToken具有比较两个深层对象的静态方法DeepEquals
。但是我想获取唯一的哈希值并将该值存储在SQL数据库中。因此,sql过程也可以进行比较。
来自SO
我确实看到他们有一个称为GetDeepHashCode的内部方法,但是 该实现基于其他受保护的属性,并且 因此,我无法“复制”代码并创建扩展方法 从它
解决方法是
您可以为此使用JTokenEqualityComparer.GetHashCode(JToken令牌) 目的。它提供了对您看到的GetDeepHashCode()方法的访问。