Sie haben Recht, dass Ihre cTag-Klasse eine IComparable<T>
Schnittstelle implementieren muss . Dann können Sie einfach Sort()
auf Ihrer Liste anrufen .
Um die IComparable<T>
Schnittstelle zu implementieren , müssen Sie die CompareTo(T other)
Methode implementieren . Der einfachste Weg, dies zu tun, besteht darin, die CompareTo-Methode des Feldes aufzurufen, das Sie vergleichen möchten. In Ihrem Fall handelt es sich dabei um das Datum.
public class cTag:IComparable<cTag> {
public int id { get; set; }
public int regnumber { get; set; }
public string date { get; set; }
public int CompareTo(cTag other) {
return date.CompareTo(other.date);
}
}
Dies würde jedoch nicht gut sortieren, da dies die klassische Sortierung nach Zeichenfolgen verwenden würde (da Sie das Datum als Zeichenfolge deklariert haben). Ich denke, der beste Weg wäre, die Klasse neu zu definieren und das Datum nicht als Zeichenfolge, sondern als DateTime zu deklarieren. Der Code würde fast gleich bleiben:
public class cTag:IComparable<cTag> {
public int id { get; set; }
public int regnumber { get; set; }
public DateTime date { get; set; }
public int CompareTo(cTag other) {
return date.CompareTo(other.date);
}
}
Das einzige, was Sie tun müssen, wenn Sie die Instanz der Klasse erstellen, um Ihre Zeichenfolge mit dem Datum in den DateTime-Typ zu konvertieren. Dies kann jedoch problemlos durchgeführt werden, z DateTime.Parse(String)
. B. mithilfe einer Methode.
list.Sort((a,b) => a.date.CompareTo(b.date));