【发布时间】:2012-04-16 18:33:41
【问题描述】:
我不知道该怎么做,这两个问题对我不起作用。一个说我不能使用委托和比较器,另一个说它不能将 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' 并且没有扩展方法 'CompareTo' 接受第一个 可以找到“System.Nullable”类型的参数 (您是否缺少 using 指令或程序集引用?)
我试过的另一个是这样的:
transaction.ScheduleCollection.Sort((lhs, rhs) => (lhs.PaymentDate.CompareTo(rhs.PaymentDate)));
得到
无法将匿名方法转换为类型“System.Collections.IComparer” 因为它不是委托类型
public void Sort(IComparer comparer);
这是我必须使用的排序方法。
【问题讨论】:
-
当您不提供任何代码时,很难用完美的解决方案判断您做错了什么......
-
什么是
GenericList<T>?那是我不熟悉的集合... -
Nikhil 或我回答了你的问题吗?
标签: c# .net sorting comparison generic-list