CTag sınıfınızın IComparable<T>
arabirimi uygulaması gerektiği konusunda haklısınız . O zaman Sort()
listenizden arayabilirsiniz .
Uygulamak için IComparable<T>
bir arayüz, sen uygulamalıdır CompareTo(T other)
yöntemi. Bunu yapmanın en kolay yolu, karşılaştırmak istediğiniz alanın, sizin durumunuzda tarih olan CompareTo yöntemini çağırmaktır.
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);
}
}
Bununla birlikte, bu iyi sıralanmaz, çünkü bu dizelerde klasik sıralama kullanır (tarihi dize olarak bildirdiğiniz için). Bu yüzden yapılacak en iyi şeyin, sınıfı yeniden tanımlamak ve tarihi dize olarak değil, DateTime olarak bildirmek olacağını düşünüyorum. Kod neredeyse aynı kalacaktı:
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);
}
}
Tarihi içeren dizenizi DateTime türüne dönüştürmek için sınıfın örneğini oluştururken yapmanız gereken tek şey, ancak örneğin DateTime.Parse(String)
yöntemle kolayca yapılabilir .
list.Sort((a,b) => a.date.CompareTo(b.date));