¿Existe una función de límite inferior en una lista ordenada <K, V>?

¿Existe una función de límite inferior en unSortedList<K ,V>? La función debe devolver el primer elemento igual o mayor que la clave especificada. ¿Hay alguna otra clase que respalde esto?

Chicos, por favor, lean la pregunta una vez más. @ No necesito una función que devuelva la clave si está presente. Estoy interesado en el escenario cuando no hay una coincidencia de clave exacta.

Estoy interesado en el tiempo O (log n). Significa que no tengo un problema con el bucle foreach, sino que me gustaría tener una forma eficiente de hacerlo.

He realizado algunas pruebas al respecto.

as instrucciones de @Linq no están optimizadas ni por el compilador ni por la máquina en tiempo de ejecución, por lo que recorren todos los elementos de la colección y son lentas O (n). Basado en la respuesta de Mehrdad Afshari, aquí hay una búsqueda binaria que funciona en O (log n) en la colección Keys:

public static int FindFirstIndexGreaterThanOrEqualTo<T>(
            this IList<T> sortedCollection, T key
        ) where T : IComparable<T> {
    int begin = 0;
    int end = sortedCollection.Count;
    while (end > begin) {
        int index = (begin + end) / 2;
        T el = sortedCollection[index];
        if (el.CompareTo(key) >= 0)
            end = index;
        else
            begin = index + 1;
    }
    return end;
}

Respuestas a la pregunta(5)

Su respuesta a la pregunta