Etwas wie folgt aus:
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);
Aber denken Sie daran, ArrayList
ist ein veraltet Klasse, versuchen Sie Ihr Design zumindest in List<Object>
oder (eine bessere Wahl) List<SomeBaseClassOrInterface>
ändern.
Ich würde empfehlen, dass Sie eine übergeordnete Schnittstelle für diese beiden hinzufügen, wenn Sie sie zusammen benötigen. Dann verwenden Sie 'List' anstelle von 'ArrayList' können Sie einfach die' 'OrderBy'' von linq verwenden. –