Ich habe die Auswahl Sortiermethode unten geschrieben. Ich möchte den Code im Allgemeinen behalten, da es eine Schulübung ist, aber ich verstehe, dass es korrektere Wege gibt, wie bei Linq. Es funktioniert gut, abgesehen davon, dass es nur die Eigenschaft PersonalNumber sortiert. Ich kann sehen, wo der Fehler ist die folgende:Methode zum Sortieren einer Liste in C#
temp = list[i].PersonalNumber;
list[i].PersonalNumber = list[posMin].PersonalNumber;
list[posMin].PersonalNumber = temp;
Gibt es eine Möglichkeit alle Eigenschaften für jeden Index in der Liste enthalten sind, zu sortieren? Oder muss ich den obigen Code für jede Eigenschaft schreiben? Es gibt insgesamt drei Eigenschaften.
Voll Methode:
public static void SelectionSort(List<Person> list) {
// With this method the Person list is sorted in ascending order.
//posMin is short for position of min
int posMin, temp;
for (int i = 0; i < list.Count - 1; i++) {
posMin = i;//Set posMin to the current index of array
for (int j = i + 1; j < list.Count; j++) {
if (list[j].PersonalNumber < list[posMin].PersonalNumber) {
//posMin will keep track of the index that min is in, this is needed when a swap happens
posMin = j;
}
}
//if pos_min no longer equals i than a smaller value must have been found, so a swap must occur
if (posMin != i) {
temp = list[i].PersonalNumber;
list[i].PersonalNumber = list[posMin].PersonalNumber;
list[posMin].PersonalNumber = temp;
}
}
}
Sie Linq verwenden könnten, wird es sortieren Listen für Sie mit einfachen Kriterien –
Hallo, ich bin noch ein ziemlich Neuling. Ich verlasse Linq für später. Ich lerne immer noch die Grundlagen. – Max
Linq ist dein Freund für diese "Art" der Sache: -p http://stackoverflow.com/questions/722868/sorting-a-list-using-lambda-linq-to-objects – ManoDestra