程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> [開發故事]第三回,實現集合類Sort自定義排序

[開發故事]第三回,實現集合類Sort自定義排序

編輯:關於ASP.NET

對集合元素進行排序是經常發生的事情,事實上大部分的集合類型都默認實現 了Sort方法,進行其元素的排序操作。例如List<T>集合的Sort方法有:

public void Sort();
public void Sort(Comparison<T> comparison);
public void Sort(IComparer<T> comparer);
public void Sort(int index,int count,IComparer<T>  comparer);

在排序使用上,四個Sort是大同小異,唯一不同的是大部分情況下,排序的要 求決定了我們不能完全滿足於默認排序的情況,因為Framework根本不清楚“你” 排序的目的,例如:

BookStore bs = new BookStore
{
   Books = new List<Book> {
     new Book{ID = 1,Name="你必須知道 的.NET",Price=69,PublishDate=DateTime.Parse("2008-3-30")},
     new Book{ID = 2,Name="Silverlight完美征 程",Price=75,PublishDate=DateTime.Parse("2009-4-30")},
     new Book{ID =3,Name="博客園精華 集",Price=72,PublishDate=DateTime.Parse("2009-5-3")}
   }
};

實現自定義的排序算法

如果需要對書店的書目進行排序,那麼在我們的小示例中至少可以按照書名、 書價和出版日期進行排序,因此.NET Framework在設計上為Sort提供了很好的擴 展,通常情況下我們需要實現自定義的comparison和comparer,例如:

// Release : code01,2009/04/12
       // Author : Anytao,http://www.anytao.com
       // List  : Protram.cs

       //02 Sort by custom comparison
       bs.Books.Sort((a,b) => { return  a.Price.CompareTo(b.Price); });

       foreach (var item in bs.Books)
       {
         Console.WriteLine(string.Format("{0}:{1}, {2}",item.Name,item.Price,item.PublishDate.ToString()));
       }

你看利用Lambda表達式實現一個Custom Comparison是何其簡單:

bs.Books.Sort((a,b) => { return a.Price.CompareTo (b.Price); });

輸出的結果為:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved