Si solo desea que Sort()
funcione, deberá implementar IComparable
o IComparable<T>
en la clase.
Si no te importa la creación de una nueva lista , puede utilizar los OrderBy
/ToList
métodos de extensión LINQ. Si desea ordenar la lista existente con la sintaxis más simple, puede agregar algunos métodos de extensión, lo que permite:
list.Sort(item => item.Name);
Por ejemplo:
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)));
}
Qué va a hacer estallar si es a.Name null ... –
Podrías usar string.Compare (a.Name, b.Name), ¿cuál sería seguro? –
¡Gracias! Aprende algo nuevo todos los días ... Editaré la respuesta. –