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 慢就沒用呀,他能容易的對多屬性做排序,而速度差異也不大
比較糟的是,如果我的物件裏有子物件,我要對依子物件的屬性做排序,他就辦不到了。

你可能感兴趣的:(list)