如何在 C# 中使用 Comparison 委托对复杂类型列表进行排序?
List 类的 Sort() 方法的重载需要将 Comparison 委托作为参数传递。
public void Sort(Comparison<T> comparison)
CompareTo 返回一个整数,指示该实例的值是否小于、等于或大于指定对象的值或其他 Int16 实例。
在 C# 中,Int16.CompareTo() 方法用于将该实例与指定对象或另一个 Int16 实例进行比较。
示例
class Program{
public static void Main(){
Employee Employee1 = new Employee(){
ID = 101,
Name = "Mark",
Salary = 4000
};
Employee Employee2 = new Employee(){
ID = 103,
Name = "John",
Salary = 7000
};
Employee Employee3 = new Employee(){
ID = 102,
Name = "Ken",
Salary = 5500
};
List<Employee> listEmployees = new List<Employee>();
listEmployees.Add(Employee1);
listEmployees.Add(Employee2);
listEmployees.Add(Employee3);
Console.WriteLine("Employees before sorting");
foreach (Employee Employee in listEmployees){
Console.WriteLine(Employee.ID);
}
listEmployees.Sort((x, y) => x.ID.CompareTo(y.ID));
Console.WriteLine("Employees after sorting by ID");
foreach (Employee Employee in listEmployees){
Console.WriteLine(Employee.ID);
}
listEmployees.Reverse();
Console.WriteLine("Employees in descending order of ID");
foreach (Employee Employee in listEmployees){
Console.WriteLine(Employee.ID);
}
}
// Approach 1 - Step 1
// Method that contains the logic to compare Employees
private static int CompareEmployees(Employee c1, Employee c2){
return c1.ID.CompareTo(c2.ID);
}
}
public class Employee{
public int ID { get; set; }
public string Name { get; set; }
public int Salary { get; set; }
}输出
Employees before sorting 101 103 102 Employees after sorting by ID 101 102 103 Employees in descending order of ID 103 102 101
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP