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

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

概述我有一些代码,它采用由自定义类对象(称为付款)组成的列表,并按日期对它们进行排序,如下所示: payments.Sort(delegate(Payments p1, Payments p2) { return p1.GetDate().CompareTo(p2.GetDate()); }); GetDate()方法和付款类如下: public class Payments { publi 我有一些代码,它采用由自定义类对象(称为付款)组成的列表,并按日期对它们进行排序,如下所示:

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

以上是内存溢出为你收集整理的c# – 用户定义的类列表错误“无法比较数组中的两个元素”全部内容,希望文章能够帮你解决c# – 用户定义的类列表错误“无法比较数组中的两个元素”所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1230402.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存