首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SOQL - APEX -列表

SOQL - APEX -列表
EN

Stack Overflow用户
提问于 2012-07-08 01:34:40
回答 1查看 2.1K关注 0票数 0

大家好,

我有一个列表,它包含来自查询的值。列表有多个字段,如何从此列表访问特定字段?

问题:

代码语言:javascript
复制
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中的每个帐户){

代码语言:javascript
复制
ListAS.add(S\_\_c field from the listS); } 

我已经尝试过我在问题部分提到的内容,但我无法访问它。请帮帮我。

我得到的错误是:List有超过1行的赋值给SObject。

非常感谢你的帮助。

注意:我不想访问for循环中的S_c字段。我想为每个帐户访问它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-08 08:38:16

在查询父级子关系时,Account对象上的字段t.AS__r实际上是满足子查询条件的对象的列表。因此,您所需要做的就是将listAS.add(t.AS__r);更改为listAS.addAll(t.AS__r);,这将使示例代码工作--将子查询中返回的所有项添加到新列表中。

通过扩展,如果您想添加所有的S_c字段,正如您在伪代码中所说的,那么您所需要做的就是循环遍历每个帐户的子查询列表,并将S_c字段添加到如下列表中:

代码语言:javascript
复制
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 --但希望您能够理解。

这个有用吗?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11380025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档