Você está correto ao dizer que sua classe cTag deve implementar IComparable<T>
interface. Então você pode simplesmente ligar Sort()
em sua lista.
Para implementar a IComparable<T>
interface, você deve implementar o CompareTo(T other)
método. A maneira mais fácil de fazer isso é chamar o método CompareTo do campo que você deseja comparar, que no seu caso é a data.
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);
}
}
No entanto, isso não classificaria bem, porque isso usaria a classificação clássica em strings (já que você declarou a data como string). Então eu acho que a melhor coisa a fazer seria redefinir a classe e declarar a data não como string, mas como DateTime. O código permaneceria quase o mesmo:
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);
}
}
A única coisa que você teria que fazer ao criar a instância da classe para converter sua string contendo a data para o tipo DateTime, mas pode ser feito facilmente, por exemplo, por DateTime.Parse(String)
método.
list.Sort((a,b) => a.date.CompareTo(b.date));