Как оказалось метод Distinct не работает когда мы хотим убрать одинаковые сложные элементы из списка
public class User
{
public User(string name, string surname)
{
Name = name;
Surname = surname;
}
public string Name;
public string Surname;
}
public static List<User> UserList = new List<User>();
UserList.Add(new User("Ivan","Ivanov"));
UserList.Add(new User("Ivan", "Andreev"));
UserList.Add(new User("Ivan", "Ivanov"));
UserList.Add(new User("Ivan", "Ivanov"));
var u = UserList.Distinct();
Все равно получается 4 элемента. Как поступить? Может есть способ это решить через LINQ?
class UserComparer : IEqualityComparer<User>
{
public bool Equals(User x, User y)
{
return x.Name == y.Name && x.Surname == y.Surname;
}
public int GetHashCode(User x)
{
return (x.Name + "_" + x.Surname).GetHashCode();
}
}
var u = UserList.Distinct(new UserComparer());
Переопределите методы Equals и GetHashCode для вашего класса, тогда метод Dinstinct должен заработать.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости