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

Eu tenho uma DataTable / coleção que é armazenada em cache na memória, quero usá-la como fonte para gerar resultados para uma caixa de texto com preenchimento automático (usando o AJAX, é claro). Estou avaliando várias opções para buscar os dados rapidamente. O número de itens na coleção / linhas na tabela de dados pode variar de 10.000 a 2.000.000. (Para não sermos desviados, no momento, suponha que a decisão tenha sido tomada, tenho RAM suficiente e usarei o cache e não a consulta ao banco de dados para isso)

Tenho alguma lógica comercial adicional para esse processamento; Preciso priorizar a lista de preenchimento automático conformepriority column (int) na coleção. Então, se alguém procurar porMicro e recebo 20 resultados de palavras / frases que começam comMicro, escolheria os 10 itens resultantes com maior prioridade. (daí a necessidade de ter uma propriedade prioritária associada ao valor da sequência).

Os itens da coleção já estão classificados em ordem alfabétic

Qual seria a melhor solução neste caso.
1. Usando DataTable.Select (.
2.Utilizar DataTable.Rows.Find .
3. use uma coleção personalizada comforeach ou para para percorrer seus valore
4. use uma coleção genérica comelegados anônimos ou lambda desde que ambos dão o mesmo desempenho ou?)

questionAnswers(5)

yourAnswerToTheQuestion