课程章节介绍
同学们,今天咱们来看看在 Apex 里怎么给一个 sObject 列表做排序。很简单,你直接调用 List 的 `sort` 方法就可以,但是内部有一套比较特别、分步骤的比较规则,咱们得理解它,不然结果可能会出乎意料。
首先记住,这个排序是区分大小写的。对 sObject 来说,它不是只盯着某一个字段排队,而是像走一套“闯关”流程:从第一步开始,只要分出高下,就马上停止,后面步骤全都不管了。
第一步,它会比较两个对象的,类型标签,,也就是 sObject 类型显示出来的名字,比如 “客户” 或 “联系人”。如果标签不一样,那就用 Unicode 顺序比出大小,直接排好;只有标签相同,才进入下一步。
第二步,如果这个对象有“名称”字段(像 Account 的 Name 字段),就会比较名称字段的值。注意,这步也是 Unicode 顺序,空值会排在非空值的前面。分出大小就停,分不出才继续。
第三步,开始比较,标准字段,,但是 Id 和 Name 这两个标准字段会被跳过,不参与这轮通用比较。比较时,是按照字段的 API 名称字母顺序,一个字段一个字段地来。比如先比 AnnualRevenue,再比 BillingCity,以此类推。每个字段的值同样采用 Unicode 排序,空字段在前。
第四步,如果标准字段全比完了依然平手,终于轮到,自定义字段,了。也是按字段 API 名的字母顺序,依次比较字段值,规则跟前面完全一样。
总的来说,你调用 `sort` 后,它会从上到下、从左到右把对象过一遍,只要在任何一个字段上发现不同,就立刻拍板定顺序。文本比较全部用 Unicode 规则,空字段永远跑到最前头。理解这套机制,你就能更好地控制列表中对象的展示顺序了。
关键词
Apex
Salesforce
Developer Guide