按日期属性</t>对GenericList <t>进行排序

时间:2012-04-16 18:33:42

标签: c# .net sorting comparison generic-list

我无法弄清楚如何做到这一点,这两个问题对我不起作用。一个说我不能使用委托和比较器,另一个说它不能将lambda转换为委托。

Sort Generic List

How do I sort a generic list?

我有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);

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

2 个答案:

答案 0 :(得分:8)

您是否考虑过使用LINQ

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

答案 1 :(得分:3)

使用LINQ lambda函数:

var OrderScheduleItem = ScheduleItems.OrderBy(p => p.PaymentDate);