我有一些代码,它采用由自定义类对象(称为付款)组成的列表,并按日期对它们进行排序,如下所示:
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)); } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。