>>>>> 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 ?