我无法弄清楚如何做到这一点,这两个问题不适合我。一个说我不能使用委托和比较器,另一个说它不能将lambda转换成委托。通过日期属性排序通用列表<T>
我有ScheduleItem
的GenericList<T>
。每个物品都有PaymentDate
属性,这是DateTime?
。
我基本上想对这个属性排序(旧 - >最新)。最简单的方法是什么?
首先我尝试这样做:
transaction.ScheduleCollection.Sort(delegate(ScheduleItem p1, ScheduleItem p2)
{
return p1.PaymentDate.CompareTo(p2.PaymentDate);
});
而且我得到这两个错误:
无法转换为键入“System.Collections.IComparer” 匿名方法,因为它不是委托类型
'System.Nullable'不包含 'CompareTo'的定义,并且没有扩展方法'CompareTo'接受第一个类型“System.Nullable” 0参数可以发现 (是否缺少using指令或程序集引用?)
而另外一个我想是这样的:
transaction.ScheduleCollection.Sort((lhs, rhs) => (lhs.PaymentDate.CompareTo(rhs.PaymentDate)));
,并得到
无法转换为键入“System.Collections.IComparer” 匿名方法,因为它不是一个委托类型
public void Sort(IComparer comparer);
这是我必须使用的排序方法。
很难告诉你在做错误的完美解决方案的好东西,当你不提供任何代码.. – 2012-04-16 18:35:17
当然,让我补充一些。 – slandau 2012-04-16 18:35:35
添加代码Jon。谢谢 – slandau 2012-04-16 18:38:34