我无法弄清楚如何做到这一点,这两个问题对我不起作用。一个说我不能使用委托和比较器,另一个说它不能将lambda转换为委托。
我有GenericList<T>
ScheduleItem
。每个项目都有PaymentDate
属性,即DateTime?
。
我基本上想要在该属性上对此列表进行排序(old-&gt;最新)。最简单的方法是什么?
首先我尝试了这个:
transaction.ScheduleCollection.Sort(delegate(ScheduleItem p1, ScheduleItem p2)
{
return p1.PaymentDate.CompareTo(p2.PaymentDate);
});
我得到了这两个错误:
无法将匿名方法转换为'System.Collections.IComparer'类型 因为它不是委托类型
'System.Nullable'不包含的定义 'CompareTo'和没有扩展方法'CompareTo'接受第一个 可以找到类型为“System.Nullable”的参数 (您是否缺少using指令或程序集引用?)
我试过的另一个就是:
transaction.ScheduleCollection.Sort((lhs, rhs) => (lhs.PaymentDate.CompareTo(rhs.PaymentDate)));
并获取
无法将匿名方法转换为'System.Collections.IComparer'类型 因为它不是委托类型
public void Sort(IComparer comparer);
这是我必须使用的排序方法。
答案 0 :(得分:8)
您是否考虑过使用LINQ?
像:
var list = list.OrderBy(x => x.PaymentDate).ToList();
答案 1 :(得分:3)
使用LINQ lambda函数:
var OrderScheduleItem = ScheduleItems.OrderBy(p => p.PaymentDate);