Here are a couple of tricks to remove duplication using LINQ.
Firstly, for simple lists:
var numbersWithDuplicates = new[] { "One", "Two", "Two", "Three", "Four" };
var numbers = numbersWithDuplicates.GroupBy(x => x).Select(group => group.First());
…and secondly for more complex objects:
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
…you can de-duplicate using any property you like:
var peopleWithDuplicates = new[]
{
new Person { Id = 2, Name = "Alice", Age = 29 },
new Person { Id = 1, Name = "Bob", Age = 30 },
new Person { Id = 3, Name = "Claire", Age = 31 },
new Person { Id = 4, Name = "Bob", Age = 50 },
};
var people = peopleWithDuplicates.GroupBy(x => x.Name).Select(group => group.First());