按日期属性对泛型列表进行排序
本文关键字:排序 列表 日期 属性 泛型 | 更新日期: 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);
这就是我必须使用的排序方法。
您是否考虑过使用 LINQ?
像这样: var list = list.OrderBy(x => x.PaymentDate).ToList();
使用 LINQ lambda 函数:
var OrderScheduleItem = ScheduleItems.OrderBy(p => p.PaymentDate);