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