使用System.Collections.ArrayList.Sort()對象數組自定義排序 其核心為比較器的實現,比較器為一個類,繼承了IComparer介面並實現int IComparer.Compare(Object x, Object y)方法,該方法實現自定義排序的比較方式,可以通過使用不 ...
使用System.Collections.ArrayList.Sort()對象數組自定義排序
其核心為比較器的實現,比較器為一個類,繼承了IComparer介面並實現int IComparer.Compare(Object x, Object y)方法,該方法實現自定義排序的比較方式,可以通過使用不同的比較器對對象數組進行不一樣的排序,可以自定義排序的基準欄位和排序方式。
比較器的實現如下:
/// <summary> /// ArrayList.Sort()比較器,將StateSectionModel按ContiueTime降序排序 /// </summary> public class SSModelSort : IComparer { public int Compare(object x, object y) { StateSectionModel a = x as StateSectionModel; StateSectionModel b = y as StateSectionModel; if (x != null && y != null) { return Convert.ToInt32(b.ContinueTime - a.ContinueTime); } else { throw new ArgumentException(); } } }
實體類StateSectionModel(需要排序的)如下:
public class StateSectionModel { /// <summary> /// 狀態 /// </summary> public int State { get; set; } /// <summary> /// 開始時間 /// </summary> public string StartTime { get; set; } /// <summary> /// 結束時間 /// </summary> public string EndTime { get; set; } /// <summary> /// 狀態持續時間 /// </summary> public double ContinueTime { get; set; } }
使用示例:
ArrayList ArrSSModel = new ArrayList(){ new StateSectionModel(1,"","",5.5), new StateSectionModel(1,"","",3.5), new StateSectionModel(1,"","",4.5)}; ArrSSModel.Sort(new SSModelSort()); //按持續時間降序排序