我有一些代码,它采用由自定义类对象(称为付款)组成的列表,并按日期对它们进行排序,如下所示:
payments.Sort(delegate(Payments p1, Payments p2) { return p1.GetDate().CompareTo(p2.GetDate()); });
GetDate()方法和付款类如下:
public class Payments
{
public string Date { get; set; }
public string Payment { get; set; }
public string Reference { get; set; }
public decimal Amount { get; set; }
public DateTime GetDate()
{
return DateTime.Parse(this.Date);
}
}
列表排序后,我手动浏览每个列表并将其上的日期与下一个日期进行比较。如果它们不同则没有任何反应,如果它们相同,那么我将付款中的数据合并为一个新的付款。然后我删除正在比较的两个付款,然后添加新的付款,然后使用该列表并继续,直到列表按日期唯一。
直到最近,这种情况一直很好,没有任何问题。但是从今天开始,有多种情况出现错误消息“无法比较数组中的两个元素”。
我已经四处寻找了这个,但我不觉得我知道什么可能导致它轻松地改变我的代码。有人可以帮我理解导致这个问题的原因以及解决问题的最佳方法吗?
由于
答案 0 :(得分:1)
使用Sort时,参数类必须为implement IComparable interface。
public class Payments : IComparable<Payments>
{
public string Date { get; set; }
public string Payment { get; set; }
public string Reference { get; set; }
public decimal Amount { get; set; }
public int CompareTo(Payments otherPayment)
{
return DateTime.Parse(this.Date).ComapreTo(DateTime.Parse(otherPayment.Date));
}
}