Это зависит от того, если вы хотите сами отсортировать список или получить значения в отсортированном порядке (без изменения списка).
Для сортировки самого списка (предположим, у вас есть List<element>
под названием elements
):
elements.Sort((x, y) => x.priority.CompareTo(y.priority));
// now elements is sorted
.NET 2.0 эквивалент:
elements.Sort(
delegate(element x, element y) {
return x.priority.CompareTo(y.priority);
}
);
Чтобы получить значения в отсортированном порядке:
var orderedElements = elements.OrderBy(x => x.priority);
// elements remains the same, but orderedElements will retrieve them in order
В .NET 2.0 нет эквивалента LINQ, но вы можете написать свой собственный:
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;
}
Использование:
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);
Какой язык программирования? – 2010-03-24 16:25:15
C#? Ява? Какой язык? –
, вероятно, C#, из-за синтаксиса <> generic/template, C++ не имеет ничего встроенного с именем точно «List», а Java предпочтет ArrayList. –