sono in grado di ordinare il mio ConcurrentDictionary per valore in questo modo:Ordinamento di una ConcurrentDictionary da Value
static ConcurrentDictionary<string, Proxy> Proxies =
new ConcurrentDictionary<string, Proxy>();
Proxies.OrderBy(p => p.Value.Speed);
Che è grande, tranne che voglio impostare quella nuova lista riordinata AS dizionario, l'ordinamento in modo efficace il dizionario stesso piuttosto che ricevere solo un elenco di risultati di elementi ordinati.
provo a fare qualcosa di simile, ma non ha avuto fortuna - il dizionario è ancora ordinata dopo:
Proxies = new ConcurrentDictionary<string,Proxy>(
Proxies.OrderBy(p => p.Value.Speed));
Sembra di fare che non ha alcun effetto sul dizionario. Ho anche provato a trasmettere il risultato OrderBy a un nuovo var pensando che potrebbe avere un effetto sul delegato ma ancora senza fortuna.
Come posso riordinare questo ConcurrentDictionary e quindi forzare il dizionario a essere il risultato riordinato da OrderBy?
Se avete bisogno le proprietà di accesso veloce di un dizionario, in combinazione con thread-sicurezza e ordinamento continua, è necessario qualcosa di simile un B-albero concorrente. Non credo che ce ne sia uno prontamente disponibile in .NET. Forse una terza parte? Qualche possibilità che tu possa usare OrderBy() quando hai bisogno dei risultati? – Timo