Construindo um dicionário ordenado usando ToDictionary
Eu não sou um especialista em C # e LINQ.
eu tenho umDictionary
, que eu entendo uma tabela de hash, ou seja, as chaves não são classificadas.
dataBase = new Dictionary<string, Record>()
Record
é uma classe definida pelo usuário que contém vários dados para uma determinada string de chave.
Eu encontrei um exemplo interessante que converte issoDictionary
dentro declassificado dicionário por LINQ:
var sortedDict = (from entry in dataBase orderby entry.Key ascending select entry)
.ToDictionary(pair => pair.Key, pair => pair.Value);
Este código funciona corretamente. O resultadosortedDict
é classificado por chaves.
Questão: Eu achei aquilosortedDict
ainda é uma tabela de hash, um tipo de:
System.Collections.Generic.Dictionary<string, Record>
Eu esperava que o dicionário resultante fosse uma espécie demap
como em C ++ STL, que geralmente é implementado como uma árvore binária (balanceada) para manter a ordenação das chaves. No entanto, o dicionário resultante ainda é uma tabela de hash.
ComosortedDict
pode manter a encomenda? Uma tabela de hash não pode conter a ordem das chaves. A implementação do C # 'sGeneric.Dictionary
diferente de uma tabela hash típica?