2010-05-14 2 views
3

Он выглядит как SortedList исключается .. Что вы считаете наиболее подходящим из существующих коллекций? (чтобы сохранить тот же быстрый доступ и изменения)SortedList, переносящий на Silverlight

Можно ли постоянно сортировать словарь Silverlight?

С наилучшими пожеланиями ВЛК

ответ

0

Чтобы ответить на ваш вопрос: Нет. Словарь не гарантирует заказанные товары по ключу.

Однако List<T> поддерживает метод BinarySearch. Это может помочь вам достичь аналогичных целей SortedList.

В документации есть хороший пример того, как это происходит в основном. Смотрите: -

List<T>.BinarySearch Method (T)

+0

Благодарю вас, все еще док говорит: Список должен быть отсортирован в соответствии с реализацией сравнения; в противном случае результат неверен. – VLK

+0

ах, ваша идея состоит в том, чтобы список всегда сортировал вставку в позицию, заданную BinarySearch .. hm, я проверю зависимость времени вставки до размера коллекции. – VLK

0

Вы можете взглянуть на Wintellect-х Power Collections. Эта библиотека бесплатна под номером EPL. Я думаю, что OrderedMultiDictionary сделает трюк для вас. Вы должны скомпилировать это в Silverlight. Я не использовал это в течение нескольких лет, но использовал эту библиотеку (и библиотеку потоков Richter) для проекта WPF.

Edit:

После игры вокруг с этим, похоже, вам нужно будет немного поработать, чтобы получить наборы питания для работы в Silverlight.

2

Я портировал как коллекцию Power Wintellect, так и коллекцию C5 Generic для Silverlight. Я сделал их доступными здесь - http://jaykimble.net/powercollections-and-c5-collections-for-silverlight4.aspx.

Я сделал это главным образом потому, что этот вопрос достиг своего максимума. Не стесняйтесь использовать их в любом проекте, с которым вы хотели бы их использовать.

0

Мое обходное решение для отсутствия Silverlight состояло в том, чтобы создать общий список с типом KeyValuePair и затем заказать список.

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(); 

Эффект такой же, как при использовании отсортированного списка.

Смежные вопросы