using System.Collections.Generic;
public static void Main()
var foodPair = new Dictionary<string, string>{{"Pizza", "Italian"}, {"Curry", "Indian"}, {"Masala", "Indian"}};
var teamPreference = new Dictionary<string, string>{{"Jose", "Italian"}, {"John", "Indian"}, {"Sarah", "Thai"}, {"Mary", "*"}};
var results = new List<KeyValuePair<string, string>>();
foreach (var teamMember in teamPreference)
var key = foodPair.FirstOrDefault(x => x.Value == "Italian").Key;
results.Add(new KeyValuePair<string, string>(teamMember.Key, key));
var getAll = foodPair.Where(x => x.Value == "Indian");
results.AddRange(getAll.Select(a => new KeyValuePair<string, string>(teamMember.Key, a.Key)));
var c = foodPair.FirstOrDefault(x => x.Value == "Thai").Key;
if (!string.IsNullOrEmpty(c))
results.Add(new KeyValuePair<string, string>(teamMember.Key, c));
if (teamMember.Value == "*")
var everything = foodPair.Keys.ToList();
results.AddRange(everything.Select(food => new KeyValuePair<string, string>(teamMember.Key, food)));
foreach (var result in results)
Console.WriteLine("{0}, {1}", result.Key, result.Value);