Buscar datarows por indices no por PK

10/07/2008 - 14:22 por Juanato | Informe spam
Estoy atascado con el Datarow de una DateTable, ya que como dicen
aqui, por lo visto es una busqueda secuencial, como el LOCATE que
hacía el DBASE III. Estoy buscando poder alternar varios indices, como
en Clipper/Xbase, pero el método oRow.Find() solo busca en la clave
primaria estoy atascado ahí necesito poder instanciar un oRow
y ejecutar la búsqueda de una expresión. ¿ Tiene find como segundo
parámetro algo para alternar el índice ?.


http://lb1.www.ms.akadns.net/commun...c=&p=1

 

Leer las respuestas

#1 Alberto Poblacion
10/07/2008 - 14:33 | Informe spam
"Juanato" wrote in message
news:
Estoy atascado con el Datarow de una DateTable, ya que como dicen
aqui, por lo visto es una busqueda secuencial, como el LOCATE que
hacía el DBASE III. Estoy buscando poder alternar varios indices, como
en Clipper/Xbase, pero el método oRow.Find() solo busca en la clave
primaria estoy atascado ahí necesito poder instanciar un oRow
y ejecutar la búsqueda de una expresión. ¿ Tiene find como segundo
parámetro algo para alternar el índice ?.



No, y es más, el Find no usa el índice, ya que es una búsqueda en
memoria y en memoria solo están los registros de datos, pero no hay índices.
Aunque el Find busca por los campos de la clave primaria, la búsqueda es
secuencial. Puestos a hacer una búsqueda secuencial, puedes usar el método
Select del DataTable, que te deja expresar cualquier condición de búsqueda.
Si necesitas hacer forzosamente una búsqueda muy rápida en memoria,
entonces no te conviene cargar los datos en un DataTable, sino que es
preferible que uses otra estructura que permita búsquedas rápidas, como por
ejemplo un HashTable o un Dictionary<K,T>.

No te confundas con el Locate de DBase ni con las búsquedas de Clipper,
ya que en ambos casos estamos hablando de algo completamente distinto, pues
estas búsquedas son sobre base de datos (que sí que puede tener índices) y
no sobre una copia de esos datos cargada en memoria, que es lo que tiene el
DataTable.

Preguntas similares