Dies, wenn Sie hängt davon ab, möchte die Liste selbst sortieren oder die Werte in sortierter Reihenfolge abrufen (ohne die Liste zu ändern).
Um die Liste zu sortieren selbst (vorausgesetzt Sie haben eine List<element>
genannt elements
):
elements.Sort((x, y) => x.priority.CompareTo(y.priority));
// now elements is sorted
.NET 2.0-Äquivalent:
elements.Sort(
delegate(element x, element y) {
return x.priority.CompareTo(y.priority);
}
);
Um die Werte in sortierter Reihenfolge zu erhalten:
var orderedElements = elements.OrderBy(x => x.priority);
// elements remains the same, but orderedElements will retrieve them in order
Es gibt keine LINQ-Entsprechung in .NET 2.0, aber Sie können Ihre eigenen schreiben:
public static IEnumerable<T> OrderBy<T>(IEnumerable<T> source, Comparison<T> comparison) {
List<T> copy = new List<T>(source);
copy.Sort(comparison);
foreach (T item in copy)
yield return item;
}
Verbrauch:
Comparison<element> compareByPriority = delegate(element x, element y) {
return x.priority.CompareTo(y.priority);
};
// unfortunately .NET 2.0 doesn't support extension methods, so this has to be
// expressed as a regular static method
IEnumerable<element> orderedElements = OrderBy(elements, compareByPriority);
Welche Programmiersprache? –
C#? Java? Was für eine Sprache? –
wahrscheinlich C#, wegen der <> generic/template-Syntax, hat C++ nichts eingebautes genau namens 'List', und Java würde ArrayList bevorzugen. –