Я знаю, что это старый вопрос, но я только что натолкнулся на другой вопрос ( C # Сортируемая коллекция, которая позволяет дублировать ключи ), которая дает решение: используйте свой собственный IComparer с SortedSet!
* Т.е. 1003 *
/// <summary>
/// Comparer for comparing two keys, handling equality as being greater
/// Use this Comparer e.g. with SortedSets, SortedLists or SortedDictionaries, that don't allow duplicate keys
/// </summary>
/// <typeparam name="TKey"></typeparam>
public class DuplicateKeyComparer<TKey> : IComparer<TKey> where TKey : IComparable
{
#region IComparer<TKey> Members
public int Compare(TKey x, TKey y)
{
int result = x.CompareTo(y);
return result == 0 ? 1 : result; // Handle equality as being greater
}
#endregion
}
Использование:
SortedSet<T> mySortedValues = new SortedSet<T>(new DuplicateKeyComparer<T>());
Редактировать: если подумать, это, вероятно, плохая идея для чего-либо, кроме SortedSet<T>
, так как вы, вероятно, не сможете найти другие значения, связанные с дублирующимися ключами, используя что-либо, кроме цикла foreach
; и SortedSet<T>
было бы лучше представить SortedList<TKey,TValue>
, где TKey - интересное значение, а TValue - счетчик (например, int
) числа дубликатов этого объекта.