using System.Collections.Generic;
using System.Diagnostics;
public static void Main()
List<Project> projs = new List<Project>();
for (int i = 0; i < 10000; i++)
projs.Add(new Project() { ProjectNo = "000" + i });
for (int i = 0; i < 10; i++)
projs.Add(new Project() { ProjectNo = "000" + i });
Console.WriteLine("RemoveDuplicates");
Console.WriteLine("-----------------------------");
Console.WriteLine("Pre count:" + projs.Count());
Stopwatch sw = Stopwatch.StartNew();
projs = RemoveDuplicates(projs);
Console.WriteLine("Post count:" + projs.Count());
Console.WriteLine("Time taken: {0} ms\n\n", sw.Elapsed.TotalMilliseconds);
public static List<Project> RemoveDuplicates(List<Project> projects)
return new HashSet<Project>(projects).ToList();
public string ProjectNo { get; set; }
public override bool Equals(object other)
var otherObject = other as Project;
return otherObject != null && otherObject.ProjectNo == ProjectNo;
public override int GetHashCode()
return ProjectNo.GetHashCode();