using System.Collections.Generic;
public static void Main()
new Person(){ FirstName="Steve", LastName="Jobs"},
new Person(){ FirstName="Bill", LastName="Gates"},
new Person(){ FirstName="Steve", LastName="Jobs"},
new Person(){ FirstName="Lary", LastName="Page"}
var dist = people.Distinct(new PersonNameComparer()).ToArray();
Array.ForEach(dist, v => Console.WriteLine(v.FirstName + " " + v.LastName));
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
class PersonNameComparer : IEqualityComparer<Person>
public bool Equals(Person x, Person y)
return x.FirstName == y.FirstName && x.LastName == y.LastName;
public int GetHashCode(Person obj)
return obj.Id.GetHashCode() ^ (obj.FirstName == null ? 0 : obj.FirstName.GetHashCode()) ^ (obj.LastName == null ? 0 : obj.LastName.GetHashCode());