>> public static void Main() >> { >> >> >> Dictionary<int, Tuple<int, int, int>> dict = new Dictionary<int, Tuple<int, int, int>>(); >> >> Tuple<int, int, int> t; // key is tuple.Item1 >> >> t = new Tuple<int, int, int>(1, 1, 1); >> UpdateDictionary(dict, t); >> >> t = new Tuple<int, int, int>(2, 1, 1); >> UpdateDictionary(dict, t); >> >> PrintDictionary("Before any update", dict); >> >> t = new Tuple<int, int, int>(2, 2, 2); >> UpdateDictionary(dict, t); >> >> PrintDictionary("After update", dict); >> Console.ReadLine(); >> } >> static void UpdateDictionary(Dictionary<int, Tuple<int, int, int>> dict, Tuple<int, int, int> t) >> { >> if (dict.ContainsKey(t.Item1) ) >> { >> dict[t.Item1] = t; >> } >> else >> dict.Add(t.Item1, t); >> } >> static void PrintDictionary(string msg, Dictionary<int, Tuple<int, int, int>> dict) >> { >> Console.WriteLine(msg); >> foreach (KeyValuePair<int, Tuple<int, int, int>> x in dict) >> { >> Console.WriteLine("{0} {1} {2}", x.Value.Item1, x.Value.Item2, x.Value.Item3); >> } >> >> } >>Since the key is in the data I'd consider using KeyedCollection instead of Dictionary ?