Use custom Comparer and map element to different type in ToDictionary operator
using System; using System.Linq; using System.Collections; using System.Collections.Generic; class Program//from ww w.ja v a 2 s. co m { static void Main(string[] args) { Dictionary<string, string> eDictionary = Student2.GetStudentsArray() .ToDictionary(k => k.id, // keySelector i => string.Format("{0} {1}", // elementSelector i.firstName, i.lastName), new MyStringifiedNumberComparer()); // comparer string name = eDictionary["2"]; Console.WriteLine("Student whose id == \"2\" : {0}", name); name = eDictionary["000002"]; Console.WriteLine("Student whose id == \"000002\" : {0}", name); } } 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 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))); } }