3個對泛型 List 排序的方法

 

方式1:

  
  
List < SoftDrink > list = manager.SoftDrink.ListSoftDrink(); list.Sort( new MyComp().Compare); list.Sort( new MyCompDesc().Compare); public class MyComp : IComparer < SoftDrink > { public int Compare(SoftDrink x, SoftDrink y) { return String.Compare(x.SerialId, y.SerialId); } } public class MyCompDesc : IComparer < SoftDrink > { public int Compare(SoftDrink x, SoftDrink y) { return String.Compare(y.SerialId, x.SerialId); } }

 

 

方式2:

  
  
list.Sort( new Comparison < SoftDrink > ( delegate (SoftDrink x, SoftDrink y) { return String.Compare(x.SerialId, y.SerialId); })); list.Sort( new Comparison < SoftDrink > ( delegate (SoftDrink x, SoftDrink y) { return String.Compare(y.SerialId, x.SerialId); }));

 

 

方式3: 使用 Dynamic Reflection Library

  
  
DynamicComparer < SoftDrink > comparer = new DynamicComparer < SoftDrink > ( " SerialId " ); DynamicComparer < SoftDrink > comparerDesc = new DynamicComparer < SoftDrink > ( " SerialId DESC " ); list.Sort(comparer); list.Sort(comparerDesc);

 

 

在List有90筆 SoftDrink的情況下,對List正排倒排連續做1000次

方法1: 0.424 秒
方法2: 0.393 秒
方法3: 1.859 秒
方法3: 0.527 秒 (如果new Comparer()放在迴圈外)

 

不要覺得 Dynamic Reflection Library 慢就沒用呀,他能容易的對多屬性做排序,而速度差異也不大
比較糟的是,如果我的物件裏有子物件,我要對依子物件的屬性做排序,他就辦不到了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值