按日期属性对泛型列表进行排序

本文关键字:排序 列表 日期 属性 泛型 | 更新日期: 2023-09-27 18:31:23

我不知道该怎么做,这两个问题对我不起作用。一个说我不能使用委托和比较器,另一个说它不能将 lambda 转换为委托。

对泛型列表进行排序

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

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

我基本上想在该属性(旧>最新)上对这个列表进行排序。最简单的方法是什么?

首先我尝试了这个:

transaction.ScheduleCollection.Sort(delegate(ScheduleItem p1, ScheduleItem p2)
                {
                    return p1.PaymentDate.CompareTo(p2.PaymentDate);
                });

我得到这两个错误:

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

"System.Nullable"不包含以下定义: "比较"和没有扩展方法"比较"接受第一个 可以找到类型为"System.Nullable"的参数 (是否缺少 using 指令或程序集引用?

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

transaction.ScheduleCollection.Sort((lhs, rhs) => (lhs.PaymentDate.CompareTo(rhs.PaymentDate)));

并得到

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

public void Sort(IComparer comparer);

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

按日期属性对泛型列表<T>进行排序

您是否考虑过使用 LINQ?

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

使用 LINQ lambda 函数:

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