[英]Sorting of different types in C# List
我有一個 ArrayList:
ArrayList myList = new ArrayList();
它至少包含兩個類實例。 我想按一個字段對其進行排序,其中包含兩個字段。 請幫助我為 Array.Sort() 方法編寫 IComparer 或請給我一個建議來為這個任務制作另一個結構(一個包含兩個類實例的列表)。
提前致謝!
像這樣的東西:
public sealed class MyComparer: System.Collections.IComparer {
// We want just one Comparer instance
public static MyComparer Comparer {
get;
} = new MyComparer();
private MyComparer() {
}
public int Compare(object x, object y) {
if (Object.ReferenceEquals(x, y))
return 0;
else if (Object.ReferenceEquals(x, null))
return -1;
else if (Object.ReferenceEquals(y, null))
return 1;
// Providing that the fields of interest are of type int
int leftField = (x is FirstType)
? ((FirstType) x).FieldOfInterest1
: ((SecondType) x).FieldOfInterest2;
int rightField = (y is FirstType)
? ((FirstType) y).FieldOfInterest1
: ((SecondType) y).FieldOfInterest2;
return leftField.CompareTo(rightField);
}
}
...
ArrayList myList = new ArrayList();
...
myList.Sort(MyComparer.Comparer);
但請記住, ArrayList
是一個過時的類,嘗試至少將您的設計更改為List<Object>
或(更好的選擇) List<SomeBaseClassOrInterface>
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.