加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 22:00:08 所属栏目:百科 来源:网络整理
导读:我有一些代码,它采用由自定义类对象(称为付款)组成的列表,并按日期对它们进行排序,如下所示: payments.Sort(delegate(Payments p1,Payments p2) { return p1.GetDate().CompareTo(p2.GetDate()); }); GetDate()方法和付款类如下: public class 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时,参数类必须为 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));
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读