Foros del Web » Programación para mayores de 30 ;) » .NET »

Problemon optimizacion con datareader y varias consultas!

Estas en el tema de Problemon optimizacion con datareader y varias consultas! en el foro de .NET en Foros del Web. Buenos días caballeros, necesito que algún sabio me ilumine. os pongo en situación.. Tengo un gridview que lo voy rellenando en funcion de unas consultas ...
  #1 (permalink)  
Antiguo 14/11/2015, 07:06
 
Fecha de Ingreso: abril-2008
Mensajes: 41
Antigüedad: 16 años
Puntos: 0
Exclamación Problemon optimizacion con datareader y varias consultas!

Buenos días caballeros, necesito que algún sabio me ilumine.
os pongo en situación..
Tengo un gridview que lo voy rellenando en funcion de unas consultas pero que esta mal optimizado. Para ello me ayudo de List<List<string>> datas = new List<List<string>>()

TENGO un gridview con 3 columnas. Las dos primeras se sacan conforme a la primera consulta y sin mas son un id, un nombrre.
La 3º columna se saca en base a otra consulta que va a ser un count

PRIMERO voy recogiendo los datos y con un List <String> Y lo meto en mi aux (List<string>).
Ademas añado una columna a 0, porque luego metere ahí valores resultantes de otras dos consultas
Código:
while (dataReader.Read()) {
                    List<string> aux = new List<string>();
                    int id = int.Parse(dataReader["id"].ToString());
                    string nombre = dataReader["nombre"].ToString();
                    aux.Add(id.ToString());
                    aux.Add(nombre);
                    aux.Add("0");
                    datas.Add(aux);
Ahora es donde viene verdaderamente mi problema. Para rellenar bien esa 3º columna con los counts hago una consulta que me devuelve ids, y sus counts correspondientes.
Actualizo mi List<List<string>> de la siguiente forma:

Código:
                dataReader = cmd.ExecuteReader();
                //Read the data and store them in the list
                while (dataReader.Read()) {
                    int cantCreada = int.Parse(dataReader["Creadas"].ToString());
                    string Referencia = dataReader["Referencia"].ToString();
                    SumaCantidadAReferenciaCreadas(ref datas, Referencia, cantCreada);
donde ese método es:
Código:
private void SumaCantidadAReferenciaCreadas(ref List<List<string>> datas, string id, int cantCreada) {
            foreach (List<string> list in datas) {
                if (list[1].ToString() == id) {
                    list[4] = (int.Parse(list[4].ToString()) + cantCreada).ToString();
                    break;
                }
            }
        }
Por ultimo ya meto mi Datas en el grid

Lo que quiero conseguir es una manera mucho mas eficiente de buscar esos ids con su count en mi Datas y meterlos sin hacer un recorrido de todas las listas para cada registro....

He mirado los diccionarios y asi, pero no tengo ni idea de como implantarlos. Soy bastante novato y por ahora ando aprendiendo...

Muchas gracias y un saludo!!!
  #2 (permalink)  
Antiguo 14/11/2015, 11:10
(Desactivado)
 
Fecha de Ingreso: enero-2015
Mensajes: 393
Antigüedad: 9 años, 3 meses
Puntos: 52
Respuesta: Problemon optimizacion con datareader y varias consultas!

No tengo mucha idea de lo que estás tratando de hacer, porque no estás dando un ejemplo claro ni mostrando el SQL que estás ejecutando o la estructura de las tablas, pero en general se recomienda:

1 - Crear un modelo de datos fuertemente tipado, en lugar de usar magic strings para todo.
2 - Usar LINQ en lugar de iterar manualmente los datos y hacer operaciones de manera imperativa.
3 - Hacer una única consulta contra la base de datos usando joins en lugar de hacer N consultas o varias consultas separadas

Etiquetas: problemon
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:36.