IComparer - это интерфейс, который используется для сортировки массива, этот интерфейс заставит класс реализовать
Метод сравнения (T x, T y), который будет сравнивать два объекта. Экземпляр класса, который реализовал этот интерфейс, используется при сортировке массива.
IComparable - это интерфейс, реализованный в виде, который должен сравнивать два объекта одного типа. Этот сопоставимый интерфейс заставит класс реализовать следующий метод CompareTo (T obj)
IEqualityComparer - это интерфейс, который используется для поиска объекта независимо от того, равен он или нет. Теперь мы увидим это в примере, где нам нужно найти отличительные признаки объекта в коллекции. Этот интерфейс будет реализовывать метод
Равен (T obj1, T obj2)
Теперь мы возьмем пример, у нас есть класс Employee, на основе которого мы должны создать коллекцию. Теперь у нас есть следующие требования.
Сортировка массива с использованием класса Array.
2. Нужна коллекция с помощью Linq: удалить дубликаты, упорядочить по порядку, чтобы уменьшить, удалить идентификатор одного сотрудника
abstract public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Address { set; get; }
}
public enum SortType
{
ByID,
BySalary
}
открытый класс EmployeeIdSorter: IComparer
{
public int Compare (Сотрудник x, Сотрудник y)
{
if (x.Id y.Id)
возврат -1;
еще
вернуть 0;
}
}
public class EmployeeSalarySorter : IComparer<Employee>
{
public int Compare(Employee x, Employee y)
{
if (x.Salary < y.Salary)
return 1;
else if (x.Salary > y.Salary)
return -1;
else
return 0;
}
}
Подробнее см. Ниже
http://dotnetvisio.blogspot.in/2015/12/usage-of-icomparer-icomparable-and.html