Si vous souhaitez que Sort()
fonctionne, vous devez implémenter IComparable
ou IComparable<T>
dans la classe.
Si vous ne me dérange pas de créer une nouvelle liste , vous pouvez utiliser les OrderBy
/ToList
méthodes d'extension LINQ. Si vous voulez trier la liste existante avec une syntaxe plus simple, vous pouvez ajouter quelques méthodes d'extension, ce qui permet:
list.Sort(item => item.Name);
Par exemple:
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)));
}
qui va exploser si a.Name est null ... –
Vous pouvez simplement utiliser string.Compare (a.Name, b.Name), ce qui serait sûr? –
Merci! Apprenez quelque chose de nouveau tous les jours ... Je vais modifier la réponse. –