Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/11/2015, 07:06
sergioo
 
Fecha de Ingreso: abril-2008
Mensajes: 41
Antigüedad: 16 años, 7 meses
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!!!