Со ссылкой на ссылку, которую добавила Ани, в этом случае это будет что-то вроде:
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;
}