What do you think about this Person class? Is it a bad idea or best practise to override Equals and GetHashCode like that?
public class Person { public int PersonId { get; set; } public string Name { get; set; } public override bool Equals(object obj) { var person = obj as Person; return PersonId == person.PersonId; } public override int GetHashCode() { return PersonId; } } Usage :
static void Main(string[] args) { var list = new List<Person>(); list.Add(new Person(){ PersonId = 1, Name = "Mike"}); list.Add(new Person() { PersonId = 2, Name = "Michael Sync" }); list.Add(new Person(){ PersonId = 1, Name = "Mike"}); var list1 = new List<Person>(); list1.Add(new Person() { PersonId = 1, Name = "Mike" }); list1.Add(new Person() { PersonId = 3, Name = "Julia" }); var except = list.Except(list1); foreach (var item in except) { Console.WriteLine(item.Name); } Console.ReadKey(); }