你的位置:首页 > ASP.net教程

[ASP.net教程]通过写一个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;      }    }  }}