2010-05-14 6 views
3

Il semble que SortedList est exclu. Que pensez-vous le plus approprié des collections existantes? (pour garder le même accès rapide et les mêmes changements)SortedList portage à Silverlight

Le dictionnaire Silverlight peut-il être trié en permanence?

Meilleures salutations VLK

Répondre

0

Pour répondre à votre question: Non, le dictionnaire ne garantit pas les articles commandés par clé.

Toutefois, le List<T> prend en charge la méthode BinarySearch. Cela peut vous aider à atteindre les objectifs similaires du SortedList.

La documentation présente un bon exemple de la façon dont cela est fondamentalement réalisé. Voir: -

List<T>.BinarySearch Method (T)

+0

merci, toujours le document dit: La liste doit déjà être triée selon l'implantation du comparateur; sinon, le résultat est incorrect. – VLK

+0

ah, votre idée est de garder la liste toujours triée en insérant dans la position donnée par BinarySearch .. hm, je vais vérifier une dépendance de l'heure d'insertion à la taille de la collection. – VLK

0

Vous pouvez jeter un oeil à Wintellect de Power Collections. Cette bibliothèque est gratuite sous le EPL. Je pense que le OrderedMultiDictionary fera l'affaire pour vous. Vous devriez être capable de compiler ceci sous Silverlight. Je n'ai pas utilisé cela depuis quelques années mais j'ai utilisé cette bibliothèque (et la bibliothèque de threads de Richter) pour un projet WPF.

Edit:

Après avoir joué avec cela, il semble que vous aurez besoin de faire un peu de travail pour obtenir les collections de pouvoir travailler dans Silverlight.

0

Ma solution de contournement pour ne pas avoir Silverlight était de créer une liste générique avec un type KeyValuePair, puis de commander la liste.

List<KeyValuePair<int, string>> sampleList = new List<KeyValuePair<int, string>>(); 

//Assuming you have a set of objects in an array or list 
foreach(var item in items) 
{ 
    sampleList.Add(new KeyValuePair<int, string>>(item.ID, item.Description)) 
} 

sampleList = sampleList.OrderBy(data => data.Key).ToList(); 

L'effet est le même que l'utilisation d'une liste triée.