Сортировка классов по одному из полей - C#
Формулировка задачи:
есть List<Employee>
у работника есть фамилия и имя.
Нужно выполнить сортировку по фамилии и, если фамилии совпадают, то по имени еще.
employees.Sort((x, y) => string.Compare(x.SurName, y.SurName)); - подходила бы, если не нужно было делать на проверку совпадения фамилий.
на java это делалось с помощью компаратора:
подскажите что-нить эквивалентное этому
public Comparator<Employee> abc = new Comparator<Employee>() {
public int compare(Employee r1, Employee r2) {
int compare = r1.getSurname().compareTo(r2.getSurname());
if (compare != 0) {
return compare;
}
return r1.getName().compareTo(r2.getName());
}
};Решение задачи: «Сортировка классов по одному из полей»
textual
Листинг программы
var employees = new List<Employee>
{
new Employee {Name = "John", SurName = "Smith"},
new Employee {Name = "Adam", SurName = "Smith"},
new Employee {Name = "Adam", SurName = "Backer"}
};
employees.Sort((e1, e2)=>
{
var res = e1.SurName.CompareTo(e2.SurName);
if (res == 0)
res = e1.Name.CompareTo(e2.Name);
return res;
});
...
class Employee
{
public string Name { get; set; }
public string SurName { get; set; }
}