Se si desidera solo il Sort()
per funzionare, è necessario implementare IComparable
o IComparable<T>
nella classe.
Se non ti dispiace la creazione di un nuovo elenco , è possibile utilizzare i metodi di estensione LINQ OrderBy
/ToList
. Se si desidera ordinare l'elenco esistente con la sintassi più semplice, è possibile aggiungere un paio di metodi di estensione, consentendo:
list.Sort(item => item.Name);
Ad esempio:
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)));
}
fonte
2009-03-03 05:43:39
Che farà saltare in aria se è a.Name null ... –
Si potrebbe semplicemente usare string.Compare (a.Name, b.Name), che sarebbe sicuro? –
Grazie! Impara qualcosa di nuovo ogni giorno ... Modificherò la risposta. –