В сторону: обратите внимание, что стандартные операторы LINQ (как в предыдущем примере) не изменяют существующий список - list.OrderBy(...).ToList()
создаст новый список на основе переупорядоченной последовательности. Однако довольно легко создать метод расширения, который позволит вам использовать лямбда-выражения с List<T>.Sort
:
static void Sort<TSource, TValue>(this List<TSource> list,
Func<TSource, TValue> selector)
{
var comparer = Comparer<TValue>.Default;
list.Sort((x,y) => comparer.Compare(selector(x), selector(y)));
}
static void SortDescending<TSource, TValue>(this List<TSource> list,
Func<TSource, TValue> selector)
{
var comparer = Comparer<TValue>.Default;
list.Sort((x,y) => comparer.Compare(selector(y), selector(x)));
}
Тогда вы можете использовать:
list.Sort(x=>x.SomeProp); // etc
Обновляет существующий список так же, как это обычно делает List<T>.Sort
.