Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > SortedList c повторяющимся ключом


Автор: NilovSerge 4.2.2008, 18:46
Всем привет!
Есть класс SortedList - для сортировки массива по полю-ключу и значению обьекту...
Но он не работает, если ключ не уникален(например, отсортировать файлы каталога по размеру - могут быть с одинаковым размером)
Чем это проще побороть(если не считать сортировать вручную...)   ?

   Заранее спасибо!

Автор: mr.DUDA 4.2.2008, 20:19
Можно использовать обычный List<> с элементами, реализующими интерфейс IComparable, в методе CompareTo сравнивать по своему алгоритму и возвращать -1, 0 или 1 в зависимости от результата сравнения 2-х элементов. Для сортировки достаточно вызвать метод Sort.

Автор: NilovSerge 7.2.2008, 14:54
Сделал как писал mr.DUDA   smile , но есть вопрос - я хочу чтоб в методе CompareTo можно было задавать тип поля по которому сортировать.
 Я не могу передать доп параметр в  Array.Sort(TypedArray) ?  Или только в типе TypedArray сделать поле-параметр и перед вызовом 
Array.Sort(TypedArray) менять его для всех элементов TypedArray?

Автор: tol05 7.2.2008, 15:41
ну так используй метод Sort, принимающий наследника IComparer (или IComparer<T>)
создавай свой класс, реализующий IComparer и в нем уже проверяй по любому полю. 
Примеры есть в msdn

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)