public string First {get ;set;}
public string Last {get; set;}
public Person(string first, string last)
public static void Main()
Person p1 = new Person("larry", "page");
Person p2 = new Person("larry", "page");
Person p3 = new Person("serguey", "brin");
Person[] persons = new Person[3] {p1, p2, p3};
var res = persons.GroupBy(p => p.First, p => p)
.Select(g => (First: g.Key, Data: g.First()))
.ToDictionary(tpl => tpl.First, tpl => tpl.Data, StringComparer.InvariantCultureIgnoreCase);