Loading

通过写一个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;
            }
        }
    }
}

 

posted @ 2015-05-25 18:16  hippieZhou  阅读(2026)  评论(0编辑  收藏  举报