在C#中,是否可以从哈希码创建新的SqlHierarchyId
?我正在网页上创建一个树视图,我认为能够将哈希代码从服务器传递到客户端返回服务器比传递SqlHierarchyId
的字符串表示更为整洁。我知道一旦从SQL中提取SqlHierarchyId
,我就可以调用SqlHierarchyId.GetHashCode()
来获取哈希码,但我无法弄清楚如何从该哈希码创建新的SqlHierarchyId
。任何帮助将不胜感激。
答案 0 :(得分:1)
无法将散列映射回SqlHierarchyId并获得所需的行为。散列码不是唯一的,多个SqlHierarchyId可能返回相同的散列码。
在维基百科上有一个关于哈希的高级描述。 http://en.wikipedia.org/wiki/Hash_function。请注意,页面上的第一张图片说明了哈希冲突。
除此之外,散列通常用作单向操作。 SqlHierarchyId上没有任何可以倒退的方法(并且SqlHierarchyId会使用自己的实现覆盖GetHashCode)。即使查看GetHashCode的实现,我也看不到能够重新创建SqlHierarchyId状态的方法。代码在循环中循环遍历id和xor'ing值的二进制表示(不能向后)。