如何在Salesforce中获取Account对象所有RecordType名称的字符串列表
提取Account对象的RecordType名称
你当前的SOQL查询本身是有效的,但它返回的是RecordType对象的集合。要只获取名称,你需要从这些对象中提取Name字段的值,具体可以这么做:
方法一:遍历集合提取名称
直接遍历查询返回的RecordType列表,将每个对象的Name属性存入字符串列表:
String strQuery = 'SELECT Name FROM RecordType WHERE SobjectType=\'Account\''; List<RecordType> lstRecordType = Database.query(strQuery); List<String> recordTypeNames = new List<String>(); for (RecordType rt : lstRecordType) { recordTypeNames.add(rt.Name); } // recordTypeNames就是所有Account的RecordType名称集合
方法二:简化写法(直接用静态SOQL)
如果不需要动态SOQL的场景,直接用静态查询结合遍历会更简洁:
List<String> recordTypeNames = new List<String>(); for (RecordType rt : [SELECT Name FROM RecordType WHERE SobjectType = 'Account']) { recordTypeNames.add(rt.Name); }
方法三:利用Salesforce集合工具类(简洁版)
如果你的Salesforce版本支持,可以用getSObjectFieldValues方法直接提取字段值,省去循环:
List<String> recordTypeNames = new List<String>( [SELECT Name FROM RecordType WHERE SobjectType = 'Account'].getSObjectFieldValues(RecordType.Name) );
注意:SOQL里可以只查询Name字段,不需要带上SobjectType(除非你后续还要用到这个字段),这样能减少数据传输,提升查询效率。
内容的提问来源于stack exchange,提问作者Hasan Zubairi
相关产品推荐
相关产品推荐

