使用JTokenEqualityComparer时如何忽略大小写?

时间:2019-06-20 15:31:01

标签: c# .net-core json.net

使用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()方法的访问。

0 个答案:

没有答案