예제 #1
0
 public void Concat(TransformedData add)
 {
     add.Table.RemoveAt(0);
     this.Table.AddRange(add.Table);
 }
예제 #2
0
        public static TransformedData ConvertRawtoTransformed(RawData rawData)
        {
            TransformedData transformedData = new TransformedData();

            string[] header = rawData.Table[0];

            transformedData.Table = new List <string[]>();

            string tHead = "Valor;DiaSemana;Mes;Ano;Pais;Estado;Cidade;Distrito;Qtd";

            transformedData.Table.Add(tHead.Split(";"));

            List <T_Row> T_Table = new List <T_Row>();

            for (int i = 1; i < rawData.Table.Count; i++)
            {
                T_Row row = new T_Row();
                int   pos = header.ToList <string>().IndexOf("Valor");
                row.Valor = rawData.Table[i][pos];

                pos = header.ToList <string>().IndexOf("Data");
                string   sData = rawData.Table[i][pos];
                DateTime data  = Convert.ToDateTime(sData);

                row.DiaSemana = data.DayOfWeek.ToString();
                row.Mes       = data.Month.ToString();
                row.Ano       = data.Year.ToString();

                pos      = header.ToList <string>().IndexOf("Pais");
                row.Pais = rawData.Table[i][pos];

                pos        = header.ToList <string>().IndexOf("Estado");
                row.Estado = rawData.Table[i][pos];

                pos        = header.ToList <string>().IndexOf("Cidade");
                row.Cidade = rawData.Table[i][pos];

                pos          = header.ToList <string>().IndexOf("Distrito");
                row.Distrito = rawData.Table[i][pos];

                row.Qtd = 1;

                T_Table.Add(row);
            }

            List <T_Row> G_Table = new List <T_Row>();

            var queryGroup = T_Table.GroupBy(
                r => new { r.Valor, r.DiaSemana, r.Mes, r.Ano, r.Pais, r.Estado, r.Cidade, r.Distrito },
                (d, m) => new T_Row {
                Valor = d.Valor, DiaSemana = d.DiaSemana, Mes = d.Mes, Ano = d.Ano, Pais = d.Pais, Estado = d.Estado, Cidade = d.Cidade, Distrito = d.Distrito, Qtd = m.Select(r => r.Qtd).Sum()
            }

                );

            G_Table = queryGroup.ToList();

            foreach (T_Row row in G_Table)
            {
                string[] line = new string[9];
                line[0] = row.Valor;
                line[1] = row.DiaSemana;
                line[2] = row.Mes;
                line[3] = row.Ano;
                line[4] = row.Pais;
                line[5] = row.Estado;
                line[6] = row.Cidade;
                line[7] = row.Distrito;
                line[8] = Convert.ToString(row.Qtd);

                transformedData.Table.Add(line);
            }



            return(transformedData);
        }