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