用户定义的类列表错误"Failed to compare two elements in the array"



我有一些代码,它包含一个由自定义类对象(称为Payments)组成的列表,并按日期对其进行排序,如下所示:

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);
}

}

列表排序后,我手动浏览每一个列表,并将其上的日期与下一个列表上的日期进行比较。如果它们不同,那么什么都不会发生,如果它们相同,那么我将付款中的数据合并到一个新的付款中。然后,我删除了正在比较的两笔付款,然后添加新的一笔,然后使用该列表并继续使用,直到该列表按日期显示为唯一。

直到最近,这一直运行良好,没有任何问题。然而,从今天起,它出现了多次错误,并显示消息"无法比较数组中的两个元素"。

我已经四处寻找了,但我觉得我对什么原因了解不够,无法轻松地对我的代码进行更改。有人能帮我了解是什么导致了这个问题,以及解决它的最佳方法吗?

感谢

使用Sort时,参数的类必须实现IComparable接口。

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));
}
}

最新更新