J'ai une liste de dates que je veux trier dans une commande ascendante. Cependant, le comparateur par défaut signifie que j'ai:
18/01/2011 23/01/2011 null null
3 Réponses :
public class DateTimeComparer : IComparer<DateTime?> { #region IComparer<DateTime?> Members public int Compare(DateTime? x, DateTime? y) { DateTime nx = x ?? DateTime.MaxValue; DateTime ny = y ?? DateTime.MaxValue; return nx.CompareTo(ny); } #endregion } No extra null checking is required.
Joli. Pourquoi pas raccourcir à datetime nx = x ?? DateTime.MaxValue; code>
Pourrait faire, n'a jamais envisagé d'utiliser l'OP NULL? Types lol!
Voici un comparateur générique qui devrait fonctionner à peu près tout type:
Vous pouvez essayer ceci:
messages.Sort((x, y) => (x.CreatedOn ?? DateTime.MaxValue).CompareTo(y.CreatedOn ?? DateTime.MaxValue));
Sont vos "dates" en réalité
nullable code> /
DateTime? Code> ou sont-ils des chaînes?