用户定义的类列表错误“无法比较数组中的两个元素”

时间:2014-01-02 16:30:25

标签: c# list sorting

我有一些代码,它采用由自定义类对象(称为付款)组成的列表,并按日期对它们进行排序,如下所示:

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

}

列表排序后,我手动浏览每个列表并将其上的日期与下一个日期进行比较。如果它们不同则没有任何反应,如果它们相同,那么我将付款中的数据合并为一个新的付款。然后我删除正在比较的两个付款,然后添加新的付款,然后使用该列表并继续,直到列表按日期唯一。

直到最近,这种情况一直很好,没有任何问题。但是从今天开始,有多种情况出现错误消息“无法比较数组中的两个元素”。

我已经四处寻找了这个,但我不觉得我知道什么可能导致它轻松地改变我的代码。有人可以帮我理解导致这个问题的原因以及解决问题的最佳方法吗?

由于

1 个答案:

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