使用Func<T>对对象进行排序
2013-01-02 14:32 哒不溜 阅读(1121) 评论(2) 编辑 收藏 举报这种方法使用原理还是冒泡排序,但是他扩展的,不仅是对int类型的数据,也可以对其他的一些无法用“<”或“>”来进行排序的对象。
代码如下:
解决方案的名称:DelegateBubbleSorter
BubbleSorter.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace DelegateBubbleSorter { class BubbleSorter { static public void Sort<T>(IList<T> sortArray, Func<T, T, bool> comparison) { bool swapped = true; do { swapped=false; for (int i = 0; i < sortArray.Count - 2; i++) { if (comparison(sortArray[i + 1], sortArray[i])) { T temp = sortArray[i]; sortArray[i] = sortArray[i + 1]; sortArray[i + 1] = temp; swapped = true; } } } while(swapped); } } }
Employee.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace DelegateBubbleSorter { class Employee { public string Name { get; private set; } public decimal Salary { get; private set; } public Employee(string name, decimal salary) { this.Name = name; this.Salary = salary; } public override string ToString() { return string.Format("{0},{1:C}", Name, Salary); } public static bool CompareSalary(Employee e1, Employee e2) { return e1.Salary < e2.Salary; } } }
调用函数:Program.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace DelegateBubbleSorter { class Employee { public string Name { get; private set; } public decimal Salary { get; private set; } public Employee(string name, decimal salary) { this.Name = name; this.Salary = salary; } public override string ToString() { return string.Format("{0},{1:C}", Name, Salary); } public static bool CompareSalary(Employee e1, Employee e2) { return e1.Salary < e2.Salary; } } }
源码都贴出来了,大家可以运行一把看看
对WPF感兴趣的朋友可以直接跟我联系
我个人QQ:1791786556
讨论QQ群:
WPF学习交流:699150554
WPF/UI 界面开发:527847154
WPF控件编程:699191787
我个人QQ:1791786556
讨论QQ群:
WPF学习交流:699150554
WPF/UI 界面开发:527847154
WPF控件编程:699191787