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); }