DataTable.Select vs DataTable.rows.Find vs foreach vs Find (Predicate <T>) / Lambda

Tengo una DataTable / colección que se almacena en caché en la memoria, quiero usar esto como fuente para generar resultados para un cuadro de texto de autocompletado (usando AJAX, por supuesto). Estoy evaluando varias opciones para recuperar los datos rápidamente. El número de elementos en la colección / filas en la tabla de datos podría variar de 10000 a 2,000,000. (Para que no nos desviemos, por el momento asuma que la decisión se ha tomado, tengo suficiente RAM y usaré el caché y no la consulta de la base de datos para esto)

Tengo lógica comercial adicional para este procesamiento; Tengo que priorizar la lista de autocompletar según unpriority column (int) en la colección. Entonces, si alguien buscaMicro y obtengo 20 resultados de palabras / oraciones que comienzan conMicro luego elegiría los 10 elementos resultantes con mayor prioridad. (de ahí la necesidad de tener una propiedad de prioridad asociada con el valor de la cadena).

Los elementos de la colección ya están ordenados alfabéticamente.

Cuál sería la mejor solución en este caso?
1. Usando DataTable.Select (.
2. @Utilizando DataTable.Rows.Find .
3. usar una colección personalizada conforeach o para para iterar a través de sus valores.
4. usar una colección genérica con delegados anónimos o lambda dado que ambos dan el mismo rendimiento on?)

Respuestas a la pregunta(5)

Su respuesta a la pregunta