Вы правы, что ваш класс cTag должен реализовывать IComparable<T>
интерфейс. Тогда ты можешь просто позвонитьSort()
в свой список.
Чтобы реализовать IComparable<T>
интерфейс, вы должны реализовать CompareTo(T other)
метод. Самый простой способ сделать это - вызвать метод CompareTo поля, которое вы хотите сравнить, которым в вашем случае является дата.
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);
}
}
Однако это не будет хорошо сортировать, потому что это будет использовать классическую сортировку по строкам (поскольку вы объявили дату как строку). Поэтому я думаю, что лучше всего было бы переопределить класс и объявить дату не как строку, а как DateTime. Код останется почти таким же:
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);
}
}
Единственное, что вам нужно сделать при создании экземпляра класса, чтобы преобразовать вашу строку, содержащую дату, в тип DateTime, но это можно легко сделать, например, DateTime.Parse(String)
методом.
list.Sort((a,b) => a.date.CompareTo(b.date));