delphixe-TObjectList排序
我有这样一份清单:delphixe-TObjectList排序,delphi,sorting,delphi-xe4,Delphi,Sorting,Delphi Xe4,我有这样一份清单: FMyScheduleList: TObjectList<TMySchedule>; 如何按此属性对列表进行排序?您必须实现一个自定义的IComparer函数,将此实现传递给类的方法,您可以使用匿名方法和类似的方法来完成此操作 FMyScheduleList.Sort(TComparer<TMySchedule>.Construct( function (const L, R: TMySchedule): integer be
FMyScheduleList: TObjectList<TMySchedule>;
如何按此属性对列表进行排序?您必须实现一个自定义的
IComparer
函数,将此实现传递给类的方法,您可以使用匿名方法和类似的方法来完成此操作
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
));
我建议使用
DateUtils.CompareDate
,它有3个优点:1。您可能不会混淆-1和1(我一直都会遇到)2。它实际上只是比较日期部分和3。您的delegate中较短的代码在旁注中,我找到了CompareText
,但是Integer
和Boolean
是否有就绪函数?目前我做了自己的比较
。
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
));
FMyScheduleList.Sort(TComparer<TMySchedule>.Construct(
function (const L, R: TMySchedule): integer
begin
Result := CompareDate(L.ADate, R.ADate);
end
));