Tri d'une ConcurrentDictionary en Valeur

Je suis en mesure de faire le tri dans mes ConcurrentDictionary en valeur de la sorte:

static ConcurrentDictionary<string, Proxy> Proxies = 
    new ConcurrentDictionary<string, Proxy>();

Proxies.OrderBy(p => p.Value.Speed);

Qui est très bien, sauf que je veux mettre ce nouveau réaménagement des la liste, dictionnaire, permettant ainsi de trier le dictionnaire lui-même plutôt que de simplement recevoir une liste d'éléments triés.

J'essaie de faire quelque chose comme ça, mais n'avait pas de chance - le dictionnaire est toujours non ordonnée après:

Proxies = new ConcurrentDictionary<string,Proxy>(
    Proxies.OrderBy(p => p.Value.Speed));

Il semble que le faire n'a pas d'effet sur le dictionnaire. J'ai aussi essayé le casting du OrderBy suite à une nouvelle var en pensant que cela peut avoir un effet sur le délégué, mais toujours pas de chance.

Comment puis-je re-commander ce ConcurrentDictionary et puis forcer le dictionnaire pour la re-commandé le résultat de OrderBy?

Si vous avez besoin rapide d'accéder aux propriétés d'un dictionnaire, combiné avec fil-sécurité et continue de tri, vous besoin de quelque chose comme un concurrent à B-arbre. Je ne crois pas qu'il existe un facilement disponibles dans .NET. Peut-être un tiers? Toute chance que vous pouvez simplement utiliser OrderBy() lorsque vous avez besoin des résultats?

OriginalL'auteur user1111380 | 2011-12-22