У меня есть список объектов в той же записи, представленный два раза. Но когда я применяю отчетливый, он не удаляется, так как чувствителен к регистру.
Я пробовал тремя способами:
- список данных, преобразованных в анонимный тип
- реализовано I Equality CompareEquals в классе путем переопределения equals и хеш-кода
- отдельный класс для реализации I Compareequals интерфейса.
static void Main(string[] args)
{
List<Employee> lstEmployee = new List<Employee>()
{
new Employee
{
sID = 100,
Name = "ASHOK"
},
new Employee
{
sID = 101,
Name = "SHAKTHI"
},
new Employee
{
sID = 102,
Name = "RAVI"
},
new Employee
{
sID=100,
Name="ashok"
}
};
var lstEmployeeDetails = lstEmployee.Distinct(new EmployeeComparer());
}
public class Employee
{
public int sID { get; set; }
public string Name { get; set; }
public override bool Equals(object obj)
{
return this.sID == ((Employee)obj).sID && this.Name ==
((Employee)obj).Name;
}
public override int GetHashCode()
{
return this.sID.GetHashCode() ^ this.Name.GetHashCode();
}
}
public class EmployeeComparer : IEqualityComparer<Employee>
{
public bool Equals(Employee x, Employee y)
{
return x.sID == y.sID && x.Name == y.Name;
}
public int GetHashCode(Employee obj)
{
return obj.sID.GetHashCode()^ obj.Name.GetHashCode();
}
}
в списке дубликаты данных есть для sid = 101 пару раз (дубликаты) с маленьким регистром. Я должен получить только "ASHOK" и id = 101