Beispiel #1
0
        public async Task performAggregateOperation()
        {
            Task <List <string> > CsvData       = IOOperations.ReadFileByLineAsync("../../../../AggregateGDPPopulation/data/datafile.csv");
            Task <string>         MapDataString = IOOperations.ReadFileToEndAsync("../../../../AggregateGDPPopulation/data/countrytocontinentmap.json");

            List <string> CsvDataList = await CsvData;

            string[] CsvDataHeaders  = CsvDataList[0].Replace("\"", string.Empty).Split(',');
            int      CountryIndex    = Array.IndexOf(CsvDataHeaders, "Country Name");
            int      PopulationIndex = Array.IndexOf(CsvDataHeaders, "Population (Millions) 2012");
            int      GDPIndex        = Array.IndexOf(CsvDataHeaders, "GDP Billions (USD) 2012");

            CsvDataList.Remove(CsvDataList[0]);
            List <string[]>   CsvDataListSplitByComma = new List <string[]>();
            AddOrUpdateOutput output = new AddOrUpdateOutput();

            foreach (string item in CsvDataList)
            {
                CsvDataListSplitByComma.Add(item.Replace("\"", string.Empty).Split(','));
            }

            string MapData            = await MapDataString;
            var    CountryContinetMap = JSONOperations.JSONDeserialize(MapData);

            foreach (string[] row in CsvDataListSplitByComma)
            {
                float Population = float.Parse(row[PopulationIndex]);
                float GDP        = float.Parse(row[GDPIndex]);
                try
                {
                    string Continent = CountryContinetMap.GetValue(row[CountryIndex]).ToString();
                    output.AddOrUpdate(Continent, Population, GDP);
                }
                catch (Exception) { }
            }

            string Output = JSONOperations.JSONSerialize(output.AggregateOutput);
            await IOOperations.WriteToFileAsync("../../../../AggregateGDPPopulation/output/output.json", Output);
        }