private static Dictionary <string, CompanyStuff> ParseInput(int rows) { Dictionary <string, CompanyStuff> companiesData = new Dictionary <string, CompanyStuff>(); var splitBy = "| -".ToCharArray(); for (int i = 0; i < rows; i++) { var args = Console.ReadLine() .Split(splitBy, StringSplitOptions.RemoveEmptyEntries); string companyName = args[0]; long productAmount = long.Parse(args[1]); string productName = args[2]; CompanyStuff companyStuff = new CompanyStuff(companyName); if (!companiesData.ContainsKey(companyName)) { companiesData.Add(companyName, companyStuff); } if (!companiesData[companyName].products.ContainsKey(productName)) { companiesData[companyName].products.Add(productName, 0); } companiesData[companyName].products[productName] += productAmount; } return(companiesData); }
private static void PrintOutput(Dictionary <string, CompanyStuff> companiesData) { var orderedData = companiesData.OrderBy(x => x.Key); foreach (var item in orderedData) { CompanyStuff cData = item.Value; var data = cData.products.Select(x => x.Key + "-" + x.Value); Console.WriteLine($"{cData.CompanyName}: {string.Join(", ",data)}"); } }