Tengo una DataTable/colección que está almacenada en la memoria caché, quiero utilizar esto como fuente para generar resultados para un cuadro de texto autocompletar (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 asumo que la decisión se ha tomado, tengo una RAM amplia y usaré la caché y no la consulta de base de datos para esto)DataTable.Select vs DataTable.rows.Find vs foreach vs Find (Predicado <T>)/Lambda
Tengo un poco de lógica comercial adicional para este procesamiento ; Tengo que priorizar la lista de autocompletar según una columna priority
(int) en la colección. Entonces, si alguien busca Micro
y obtengo 20 resultados de palabras/oraciones que comienzan con Micro
, entonces elegiría los 10 primeros 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. Utilizando DataTable.Select (.
2. Using DataTable.Rows.Find(.
3. Uso una colección personalizada con foreach or for para iterar a través de sus valores.
4. Uso de una colección genérica con anonymous delegates o lambda (since both give same performance o not?)
Bueno, simplemente verificando si alguien ya 'ha estado allí'. –
Si lo compara, ¡háganoslo saber! Tengo curiosidad por lo que encontrarás. –