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

sla*_*dau 2 .net c# sorting comparison generic-list

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

排序通用列表

如何对通用列表进行排序?

我有一个GenericList<T>ScheduleItem.每个项目都有一个PaymentDate属性DateTime?.

我基本上想要在该属性上对此列表进行排序(old-> latest).最简单的方法是什么?

首先我尝试了这个:

transaction.ScheduleCollection.Sort(delegate(ScheduleItem p1, ScheduleItem p2)
                {
                    return p1.PaymentDate.CompareTo(p2.PaymentDate);
                });
Run Code Online (Sandbox Code Playgroud)

我得到了这两个错误:

无法将匿名方法转换为类型'System.Collections.IComparer',因为它不是委托类型

'System.Nullable'不包含'CompareTo'的定义,并且没有扩展方法'CompareTo'可以找到接受类型'System.Nullable'的第一个参数(你是否缺少using指令或汇编引用?)

我尝试的另一个是这样的:

transaction.ScheduleCollection.Sort((lhs, rhs) => (lhs.PaymentDate.CompareTo(rhs.PaymentDate)));
Run Code Online (Sandbox Code Playgroud)

得到

无法将匿名方法转换为类型'System.Collections.IComparer',因为它不是委托类型

public void Sort(IComparer comparer);
Run Code Online (Sandbox Code Playgroud)

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

小智 8

你有没有想过使用LINQ

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

  • 什么是GenericList?你做的东西? (2认同)