当前位置: 代码迷 >> C# >> 经过写一个Demo展示C#中多种常用的集合排序方法
  详细解决方案

经过写一个Demo展示C#中多种常用的集合排序方法

热度:53   发布时间:2016-05-05 03:41:02.0
通过写一个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;            }        }    }}

 

  相关解决方案