大家好,
我有一个列表,它包含来自查询的值。列表有多个字段,如何从此列表访问特定字段?
问题:
List <Account> listS = [Select
(Select S__c from AS__r
where S__r.Abc__c = 'Confirmed'),
(Select PQR__c from AHS__r)
from Account where Id in: TravellerIds];
List <AS__c> listAS = new list <AS__c>();
for (Account t: listS){
listAS.add(t.AS__r);
}伪码问题
(listS中的每个帐户){
ListAS.add(S\_\_c field from the listS); } 我已经尝试过我在问题部分提到的内容,但我无法访问它。请帮帮我。
我得到的错误是:List有超过1行的赋值给SObject。
非常感谢你的帮助。
注意:我不想访问for循环中的S_c字段。我想为每个帐户访问它。
发布于 2012-07-08 08:38:16
在查询父级子关系时,Account对象上的字段t.AS__r实际上是满足子查询条件的对象的列表。因此,您所需要做的就是将listAS.add(t.AS__r);更改为listAS.addAll(t.AS__r);,这将使示例代码工作--将子查询中返回的所有项添加到新列表中。
通过扩展,如果您想添加所有的S_c字段,正如您在伪代码中所说的,那么您所需要做的就是循环遍历每个帐户的子查询列表,并将S_c字段添加到如下列表中:
List<string> listOfS = new List<string>();
for(Account acc : listAS){
for(A__c a: acc.AS__r){
listOfS.add(a.S__c);
}
}这假定您的关系名称AS__r所引用的自定义对象的API名称为A__c,并且字段S__c的类型为string --但希望您能够理解。
这个有用吗?
https://stackoverflow.com/questions/11380025
复制相似问题