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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章