Use IEqualityComparer<T> with ToDictionary operator
using System; using System.Linq; using System.Collections; using System.Collections.Generic; class Program// ww w . j av a2s .c o m { static void Main(string[] args) { Dictionary<string, Student2> eDictionary = Student2.GetStudentsArray() .ToDictionary(k => k.id, new MyStringifiedNumberComparer()); Student2 e = eDictionary["2"]; Console.WriteLine("Student whose id == \"2\" : {0} {1}", e.firstName, e.lastName); e = eDictionary["000002"]; Console.WriteLine("Student whose id == \"000002\" : {0} {1}", e.firstName, e.lastName); } } public class MyStringifiedNumberComparer : IEqualityComparer<string> { public bool Equals(string x, string y) { return (Int32.Parse(x) == Int32.Parse(y)); } public int GetHashCode(string obj) { return Int32.Parse(obj).ToString().GetHashCode(); } } public class Actor { public int birthYear; public string firstName; public string lastName; public static Actor[] GetActors() { Actor[] actors = new Actor[] { new Actor { birthYear = 1964, firstName = "Kotlin", lastName = "Ruby" }, new Actor { birthYear = 1968, firstName = "Owen", lastName = "Windows" }, new Actor { birthYear = 1960, firstName = "Javascript", lastName = "Spader" }, new Actor { birthYear = 1964, firstName = "Scala", lastName = "Java" }, }; return (actors); } } public class Student2 { public string id; public string firstName; public string lastName; public static ArrayList GetStudentsArrayList() { ArrayList al = new ArrayList(); al.Add(new Student2 { id = "1", firstName = "Joe", lastName = "Ruby" }); al.Add(new Student2 { id = "2", firstName = "Windows", lastName = "Python" }); al.Add(new Student2 { id = "3", firstName = "Application", lastName = "HTML" }); al.Add(new Student2 { id = "4", firstName = "David", lastName = "Visual" }); al.Add(new Student2 { id = "101", firstName = "Kotlin", lastName = "Fortran" }); return (al); } public static Student2[] GetStudentsArray() { return ((Student2[])GetStudentsArrayList().ToArray(typeof(Student2))); } }