2

我不知道该怎么做,这两个问题对我不起作用。一个说我不能使用委托和比较器,另一个说它不能将 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);

这就是我必须使用的排序方法。

4

2 回答 2

8

您是否考虑过使用LINQ

就像是: var list = list.OrderBy(x => x.PaymentDate).ToList();

于 2012-04-16T18:38:10.047 回答
3

使用 LINQ lambda 函数:

var OrderScheduleItem = ScheduleItems.OrderBy(p => p.PaymentDate);
于 2012-04-16T18:39:02.670 回答