using System.Collections.Generic;
public static void Main(string[] args)
public static void FindFrequentToppings()
var json = File.ReadAllText(@"pizzas.json");
var pizzaConfigs = JsonConvert.DeserializeObject<PizzaConfiguration[]>(json);
var orderedConfigs = pizzaConfigs.Select(x => string.Join(",", x.Toppings.OrderBy(y => y)));
var groups = orderedConfigs.GroupBy(x => x);
Dictionary<string, int> dicToppingCounts = new Dictionary<string, int>();
foreach (var g in groups)
dicToppingCounts.Add(g.Key, g.Count());
var orderedToppingCounts = dicToppingCounts.OrderByDescending(x => x.Value);
var Top20ToppingCounts = orderedToppingCounts.Take(20);
Console.WriteLine("=====================================");
foreach (var t in Top20ToppingCounts)
Console.WriteLine("Toping : " + string.Join(",", topping) + "\t Frequency : " + t.Value);
public class PizzaConfiguration
[JsonProperty("toppings")]
public string[] Toppings { get; set; }