none
Sumar columnas de datagridview por grupos RRS feed

  • Pregunta

  • hola compañeros vengo hoy para ver si me pueden ayudar a solucionar un problema que esta de la siguiente forma por medio de un archivo de texto tengo que llenar un DataGridView, cosa que ya logre , lo lleno con nombre y clasificación,en el archivo de texto esta separado de la siguiente manera por ejemplo  Fernando,10 únicamente por una coma y el problema es que por ejemplo es que necesito lo siguiente, si por ejemplo hay esto en el archivo en el txt.

    Fernando,10

    Fernando,10

    Fernando,10

    en el datagrid solo se muestre Fernando,30 ósea sumar la clasificación a continuación les dejo el código con el que lleno el datagrid para que me entiendan mejor.

    agradezco su ayuda

            private void leerArchivoToDgv()
            {
                List<string> registros = new List<string>();
                DataRow fila;
                DataTable table = new DataTable();
                string ruta = @"C:\Users\Ejemplo\Documents\prueba.txt";
                StreamReader leer = new StreamReader(ruta);
                string linea = string.Empty;
                while (!leer.EndOfStream)
                {
                    linea = leer.ReadLine();
                    registros.Add(linea);
                }
                char[] MyChar = { ',' };
                string[] DatosColuna = new string[] { "Clasificacion", "Cantidad" };
    
                for (int col = 0; col < DatosColuna.Length; col++)
                {
                    table.Columns.Add(DatosColuna[col]);
                }
                string[] Datos;
                for (int i = 1; i <= registros.Count - 1; i++)
                {
                    Datos = registros[i].Split(MyChar);
                    fila = table.NewRow();
                    for (int j = 0; j <= Datos.Length - 1; j++)
                    {
                        fila[j] = Datos[j];
                    }
                    table.Rows.Add(fila);
    
                }
                dataGridView1.DataSource = table;
            }

    jueves, 11 de abril de 2019 22:13

Respuestas

  • hola

    Aconsejaria crees una clase como ser

    	public class Registro
    	{
    		public string Nombre {get;set;}
    		public int Clasificacion {get;set;}
    		public int CantidadRepeticiones {get;set;}
    	}

    para poder aplicar linq y agrupar

    	private void leerArchivoToDgv()
    	{
    		DataRow fila;
    		DataTable table = new DataTable();
    
    		string ruta = @"C:\Users\Ejemplo\Documents\prueba.txt";
    		string[] registros = File.ReadAllLines(ruta);
    
    		var result = from item in registros
    			      group item by item into g
    			      let datos = g.Key.Split(',')
    				select new Registro()
    				{
    				        Nombre = datos[0],
    					Clasificacion = Convert.ToInt32(datos[1]),
    					CantidadRepeticiones = g.Count()
    				};
    
    		dataGridView1.DataSource = result.ToList();
    	}

    es mas facil que usar datatable

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 12 de abril de 2019 13:25