我有一个这样的清单:
FMyScheduleList: TObjectList<TMySchedule>;
它有一个属性:
property ADate: TDate read FDate write FDate;
如何按此属性对列表进行排序?
答案 0 :(得分:17)
您必须实现将此实现传递给Sort
类的System.Generics.Collections.TObjectList
方法的自定义IComparer
函数,您可以使用带有{{3}的方法的匿名方法执行此操作像这样。
FMyScheduleList.Sort(TComparer<TMySchedule>.Construct(
function (const L, R: TMySchedule): integer
begin
if L.ADate=R.ADate then
Result:=0
else if L.ADate< R.ADate then
Result:=-1
else
Result:=1;
end
));
正如@Stefan建议您也可以使用CompareDate
单位中定义的System.DateUtils
函数。
FMyScheduleList.Sort(TComparer<TMySchedule>.Construct(
function (const L, R: TMySchedule): integer
begin
Result := CompareDate(L.ADate, R.ADate);
end
));