是否可以从哈希代码创建SqlHierarchyId?

时间:2012-11-15 16:00:46

标签: c# sql-server-2008 hierarchical-data

在C#中,是否可以从哈希码创建新的SqlHierarchyId?我正在网页上创建一个树视图,我认为能够将哈希代码从服务器传递到客户端返回服务器比传递SqlHierarchyId的字符串表示更为整洁。我知道一旦从SQL中提取SqlHierarchyId,我就可以调用SqlHierarchyId.GetHashCode()来获取哈希码,但我无法弄清楚如何从该哈希码创建新的SqlHierarchyId。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

无法将散列映射回SqlHierarchyId并获得所需的行为。散列码不是唯一的,多个SqlHierarchyId可能返回相同的散列码。

在维基百科上有一个关于哈希的高级描述。 http://en.wikipedia.org/wiki/Hash_function。请注意,页面上的第一张图片说明了哈希冲突。

除此之外,散列通常用作单向操作。 SqlHierarchyId上没有任何可以倒退的方法(并且SqlHierarchyId会使用自己的实现覆盖GetHashCode)。即使查看GetHashCode的实现,我也看不到能够重新创建SqlHierarchyId状态的方法。代码在循环中循环遍历id和xor'ing值的二进制表示(不能向后)。