2011-12-08 19 views
7

Sto lavorando con .NET 3.5, e ho questo:Come si crea una lista <T> da una lista ordinata <int, T>?

SortedList<int, BrainTickTransition> 

E voglio uno di questi:

List<BrainTickTransition> 

C'è un modo rapido per fare questo senza dover copiare tutto dei valori di SortedList?

+0

Considerare la proprietà SortedList.Values. –

+0

Ho un datacontract che serializza una lista , motivo per cui ho bisogno della lista . – Almo

risposta

11

I valori devono essere copiati, perché non c'è modo di condividere la memoria tra uno List<TValue> e uno SortedList<TKey,TValue>.

presumo si desidera una List<TValue> contenente i valori senza preoccuparsi delle chiavi, che si può fare con:

sortedList.Values.ToList(); 

Ma se avete solo bisogno di un IList<TValue> (in contrasto con la classe concreta List<TValue>) si può utilizzare direttamente la proprietà Values e quindi evitare di creare una copia.

Ovviamente queste soluzioni si differenziano nella loro semantica quando la raccolta originale viene modificata. La copia List<TValue> non rifletterà le modifiche, mentre la IList<TValue> a cui fa riferimento la proprietàrifletterà le modifiche, anche se la si assegna a un'altra variabile.

+0

Sembra che sia così, grazie. Risposta accettata dopo che scade il tempo. :) – Almo

+4

Povero, povero 'nuovo Elenco (sortedList.Values)'. Nessuno vuole giocarci più. :-) – Jon

Problemi correlati