通过写一个Demo展示C#中多种常用的集合排序方法
不多说,程序很简单,就是将集合中的数据进行排序,但使用到的知识点还是比较多的,大牛勿喷,谨献给初学者!直接上程序吧!
namespace Demo { /// <summary> /// Demo:使用不同排序方法对元素进行排序 /// </summary> class Program { private static void Main(string[] args) { ArrayList arrayList = Product.GetArrayList(); List<Product> list = Product.GetList(); //1、使用继承IComparer接口的函数来进行排序 arrayList.Sort(new ProductCompare()); foreach (Product product in arrayList) { Console.WriteLine(product.ToString()); } Console.WriteLine("---------------------------"); //2、使用继承IComparer<T>接口的函数来进行排序 list.Sort(new ProductCompareT()); foreach (Product product in list) { Console.WriteLine(product.ToString()); } Console.WriteLine("---------------------------"); //3、使用委托来进行排序 list.Sort(delegate(Product x, Product y) { return x.Price.CompareTo(y.Price); }); foreach (Product product in list) { Console.WriteLine(product.ToString()); } //4、使用Lambda表达式来进行排序; list.Sort((x, y) => x.Price.CompareTo(y.Price)); foreach (Product product in list) { Console.WriteLine(product.ToString()); } //5、使用扩展方法来进行排序 foreach (Product product in list.OrderBy(p=>p.Price)) { Console.WriteLine(product.ToString()); } Console.ReadKey(); } } public class Product { public string Name { get; set; } public decimal Price { get; set; } public static ArrayList GetArrayList() { return new ArrayList() { new Product {Name = "WindowsPhone", Price = 10m}, new Product {Name = "Apple", Price = 20m}, new Product {Name = "Android", Price = 5m} }; } public static List<Product> GetList() { return new List<Product>() { new Product {Name = "WindowsPhone", Price = 10m}, new Product {Name = "Apple", Price = 20m}, new Product {Name = "Android", Price = 5m} }; } public override string ToString() { return String.Format("{0}--{1}", Name, Price); } } /// <summary> /// 使用IComparer对ArrayList进行排序 /// 显示实现Compare接口,常用ArrayList类型的集合来调用 /// </summary> public class ProductCompare : IComparer { public int Compare(object x, object y) { Product first = x as Product; Product second = y as Product; if (first != null && second !=null) { return first.Price.CompareTo(second.Price); } else { return -1; } } } /// <summary> /// 使用IComparer<Product>进行排序 /// 显式实现Compare接口,常用List<T>类型的集合来调用 /// </summary> public class ProductCompareT : IComparer<Product> { public int Compare(Product x, Product y) { Product first = x as Product; Product second = y as Product; if (first != null && second != null) { return first.Price.CompareTo(second.Price); } else { return -1; } } } }