0

在 C# 中,是否可以SqlHierarchyId从哈希码创建一个新的?我正在网页上创建一个树形视图,并且我认为能够将哈希码从服务器传递到客户端比传递SqlHierarchyId. 我知道一旦我SqlHierarchyId从 SQL 中提取一个,我就可以调用SqlHierarchyId.GetHashCode()来获取哈希码,但我不知道如何SqlHierarchyId从该哈希码创建一个新的。任何帮助,将不胜感激。

4

1 回答 1

1

不可能将哈希映射回 SqlHierarchyId 并获得您想要的行为。哈希码并不意味着唯一,多个 SqlHierarchyId 可能返回相同的哈希码。

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

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

于 2012-11-15T16:23:47.663 回答