.NET中的LinkedHashMap

我想知道.NET中是否有java.util.LinkedHashMap的对应物? (即,如果我访问一个元素,则会自动(重新)排序元素。(boolean accessOrder))。

一些谷歌搜索似乎表明,LinkedHashMap没有内置的C#等价物,但有一些第三方选项可用。

只是为读者澄清一点:LinkedHashMap只有在使用一个特定的构造函数重载构建时才会表现这种方式。 通常,元素按插入顺序维护。 (这对我来说有点奇怪,但没关系。)

我不相信.NET中有这样的类。 使用链接的元素列表和从键到链表节点的字典构建一个并不太难。 然后,访问将包括获取链接列表节点,将其移动到头部并返回值。

如果你愿意,我很乐意今晚或明天实施它 – 尽管可能没有完整的unit testing等。(全面测试一个集合是一项耗时的业务!)

这是我在论坛上找到的C#实现:

它没有文档,但确实有一些测试。 然而,它不是通用的。 至少这是我猜的。

@Jon:如果你能快速实施,我也会很感激。 我想象一个LinkedList顶部的Dictionary是最好的,但是我听说 LinkedList存在垃圾收集问题,这会减慢速度。

我使用System.Collections.Specialized.OrderedDictionary作为LinkedHashMap的替代品。 它对我有用。 是否有任何关于OrderedDictionary的遗漏(是的,它不是通用的,但它可以与.Net 2或更新版本一起使用)?

Nhibernate有一个NHibernate.Util.LinkedHashMap实现。

如果您已经拥有了代码,就像我一样,它可以很方便