Buscar un datarow

23/05/2008 - 01:25 por Luis Tores | Informe spam
Se que hay varias maneras de buscar una fila (datarow) en un datatable dada
una condicion. Pero cual de las maneras es la mas eficiente o rapida ?

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
23/05/2008 - 08:56 | Informe spam
"Luis Tores" <lt...> wrote in message
news:
Se que hay varias maneras de buscar una fila (datarow) en un datatable
dada una condicion. Pero cual de las maneras es la mas eficiente o rapida
?



Todas son ineficientes y lentas :-)
El DataTable no tiene índices, por lo que las búsquedas de filas ocasionan
que se recorran todas ellas secuencialmente hasta encontrar lo que se desea.
Si necesitas búsquedas eficientes, conviene que extraigas del DataTable la
columna de búsqueda y la encapsules en algún otro tipo de estructura que sí
que disponga de mecanismos adecuados. Por ejemplo, un Hashtable. O que
ordenes primero el Datatable y luego hagas búsquedas dicotómicas (pero esto
solo merece la pena si vas a hacer muchas búsquedas, sino el tiempo
consumido en la ordenación es mucho mayor que el de búsqueda).
Respuesta Responder a este mensaje
#2 Luis Tores
23/05/2008 - 14:19 | Informe spam
Veo en la ayuda que el metodo Find() utiliza la Primary Key del datatable.
No deberia ser mas rapido?


"Alberto Poblacion"
escribió en el mensaje news:unmK$
"Luis Tores" <lt...> wrote in message
news:
Se que hay varias maneras de buscar una fila (datarow) en un datatable
dada una condicion. Pero cual de las maneras es la mas eficiente o
rapida ?



Todas son ineficientes y lentas :-)
El DataTable no tiene índices, por lo que las búsquedas de filas
ocasionan que se recorran todas ellas secuencialmente hasta encontrar lo
que se desea.
Si necesitas búsquedas eficientes, conviene que extraigas del DataTable
la columna de búsqueda y la encapsules en algún otro tipo de estructura
que sí que disponga de mecanismos adecuados. Por ejemplo, un Hashtable. O
que ordenes primero el Datatable y luego hagas búsquedas dicotómicas (pero
esto solo merece la pena si vas a hacer muchas búsquedas, sino el tiempo
consumido en la ordenación es mucho mayor que el de búsqueda).


Respuesta Responder a este mensaje
#3 Alberto Poblacion
23/05/2008 - 19:48 | Informe spam
"Luis Tores" <lt...> wrote in message
news:%23x3q%
Veo en la ayuda que el metodo Find() utiliza la Primary Key del datatable.
No deberia ser mas rapido?



No, la descripción del Find dice que el argumento que le pases lo compara
con los valores de la columna o columnas que estén marcadas como "Primary
Key", pero no dice que se construya en memoria ningún índice sobre este
campo o campos.
Respuesta Responder a este mensaje
#4 Juanato
28/05/2008 - 00:31 | Informe spam
Perdonad, pero la nostalgia de venir del Xbase, donde se puede en tiempo
de ejecución crear un subconjunto del indice activo, hace que sea muy
sencillo activar un filtro (siempre que cuentes con la expresión deseada
en el indice activo)... y pregunto yo... ADO y ADO.NET no implementan
nada para no tener que hacer el idiota haciendo un FOReach por el
arreglo DATATABLEs o DATAROWS de una DATASET ?

Imagino que habrá una forma... yo pensaba que el Find de una Recordset
del ADO 2.8SP1 buscaba por un campo con Primary key... no existe lo
mismo en ADO.NET ?

Ayuda !!!

Alberto Poblacion wrote:
"Luis Tores" <lt...> wrote in message
news:%23x3q%
Veo en la ayuda que el metodo Find() utiliza la Primary Key del
datatable. No deberia ser mas rapido?



No, la descripción del Find dice que el argumento que le pases lo
compara con los valores de la columna o columnas que estén marcadas como
"Primary Key", pero no dice que se construya en memoria ningún índice
sobre este campo o campos.


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida