Я хочу создать IComparer<string>
для SortedDictionary<string, int>
, который будет сортировать все по алфавиту, но если он увидит ключ «Другого», он поместит «Другое» в конце списка.Пользовательский IComparer
0
A
ответ
2
Вы имеете в виду вот это?
public sealed class MyComparer : Comparer<string>
{
public override int Compare(string x, string y)
{
if(x == "Other")
return y == "Other" ? 0 : 1;
if(y == "Other")
return -1;
// Change this comparer if required.
return StringComparer.OrdinalIgnoreCase.Compare(x, y);
}
}
Использование:
var dict = new SortedDictionary<string, int> (new MyComparer())
{
{ "Other", 1 }, { "aaa", 2 }, { "bbb", 3 }
};
Очевидно, что вы можете сделать это более общим путем записи SpecialCaseAtEndComparer<T>
по:
- Позволяюще "специальное" значение, которое будет введено в компаратор.
- Позволяет вводить «нормальный» компаратор в компаратор.
- Выполнение сравнения для всех типов, а не только строк.
+0
Отлично работает! Благодарю. –
Смежные вопросы
- 1. Пользовательский Icomparer с аргументом
- 2. Как использовать пользовательский IComparer для SortedDictionary?
- 3. Пользовательский заказ T-SQL By (IComparer)
- 4. IComparer по нескольким значениям
- 5. IComparer issue
- 6. OrderBy с непереходным IComparer
- 7. Реализация IComparer <T> Для IComparer <DictionaryEntry>
- 8. Использование ICOMPARER для VB.NET
- 9. Shuffle using IComparer
- 10. IComparer для естественной сортировки
- 11. icomparer в нескольких списках
- 12. LINQ orderby vs IComparer
- 13. Тестирование общего IComparer
- 14. list.sort IComparer производительность
- 15. Обеспечения действительный IComparer используется
- 16. vb.net TreeView IComparer
- 17. twitter oauth icomparer error
- 18. Ошибка сортировки .NET IComparer
- 19. IComparer классов для пользовательского класса
- 20. Абстрактный класс с использованием IComparer
- 21. Список <> OrderBy IComparer?
- 22. IComparer или IEquatable или niether?
- 23. IComparer на основе имущества интерфейса
- 24. IComparer не работает должным образом
- 25. Linq по сравнению с IComparer
- 26. Реализация общего IComparer в VB
- 27. C# лямбда-выражения и IComparer
- 28. Использовать IComparer асинхронно в C#
- 29. IComparer с использованием выражения Lambda
- 30. Array.sort с пользовательским IComparer интерфейсом
Достойный гол. Как это происходит? –