Использование SortedDictionary - получение следующего значения - PullRequest
5 голосов
/ 11 февраля 2011

Я использую SortedDictionary для хранения значений, отсортированных по целому числу.

Мне нужно получить следующее значение после определенного существующего целого числа. Я бы предпочел работать с перечислителем, но нет GetEnumerator(Key k) или подобной функции.

SortedDictionary<int, MyClass> _dict;


void GetNextValue(int start, out MyClass ret)
{
}

1 Ответ

2 голосов
/ 11 февраля 2011

Со ссылкой на ссылку, которую добавила Ани, в этом случае это будет что-то вроде:

ret = source.SkipWhile(pair => pair.Key <= start).First().Value;

или, может быть (для использования стиля Try)

using(var iter = source.GetEnumerator()) {
    while(iter.MoveNext()) {
        if(iter.Current.Key > start) {
             ret = iter.Current.Value;
             return true;
        }
    }
    ret = null;
    return false;
}
...