我不知道该怎么做,这两个问题对我不起作用。一个说我不能使用委托和比较器,另一个说它不能将 lambda 转换为委托。
我有一个GenericList<T>
。ScheduleItem
每个项目都有一个PaymentDate
属性,即DateTime?
.
我基本上想在该属性(旧->新)上对这个列表进行排序。最简单的方法是什么?
首先我尝试了这个:
transaction.ScheduleCollection.Sort(delegate(ScheduleItem p1, ScheduleItem p2)
{
return p1.PaymentDate.CompareTo(p2.PaymentDate);
});
我得到这两个错误:
无法将匿名方法转换为类型“System.Collections.IComparer”,因为它不是委托类型
“System.Nullable”不包含“CompareTo”的定义,并且找不到接受“System.Nullable”类型的第一个参数的扩展方法“CompareTo”(您是否缺少 using 指令或程序集引用?)
我试过的另一个是这样的:
transaction.ScheduleCollection.Sort((lhs, rhs) => (lhs.PaymentDate.CompareTo(rhs.PaymentDate)));
并得到
无法将匿名方法转换为类型“System.Collections.IComparer”,因为它不是委托类型
public void Sort(IComparer comparer);
这就是我必须使用的排序方法。