快速业务通道

[开发故事]第三回,实现集合类Sort自定义排序

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20
,2009/04/12
// Author : Anytao,http://www.anytao.com
// List  : BookComparison.cs

public class BookComparison : IComparer<Book>
{
   private ComparisonType type;

   public BookComparison(ComparisonType type)
   {
     this.type = type;
   }

   public int Compare(Book x,Book y)
   {
     switch (this.type)
     {
       case ComparisonType.Price:
         return x.Price.CompareTo(y.Price);
         break;
       case ComparisonType.PublishDate:
         return x.PublishDate.CompareTo(y.PublishDate);
         break;
       default:
         break;
     }

     return 0;
   }
}

添加一个ComparisonType结构,在BookComparson初始化时决定Comparison的 方式:

//04 Sort by custom comparison: BookComparison
bs.Books.Sort(new BookComparison (ComparisonType.PublishDate).Compare);

结论

自定义Comparison为实现更好的Sort控制,提供了很好的扩展机制。在我们的 实际应用中,对于例如BookStore这样的具体应用而言,我更推荐以LINQ的 OrderBy来实现,例如:

//05 Sort by Linq
var list = from c in bs.Books
       orderby c.PublishDate ascending
       select c;

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

orderby子句可以选择任意的排序条件,同时ascending或者descending控制升 序和降序。

何去何从,看官自评。

文章来源:http://anytao.cnblogs.com/

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号