繁体   English   中英

SOQL-APEX-列表

[英]SOQL - APEX - List

大家好,
我有一个列表,其中包含来自查询的值。 该列表包含多个字段,如何从该列表访问特定字段?

问题:

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(listS的S__c字段); }

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

我得到的错误是 :列表有多于1行分配给SObject。

非常感谢您的帮助。

注意:我不想为每个AS _c访问for循环内的S_ c字段 。我想为每个帐户访问它。

在查询父子关系时,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的类型为字符串-但希望您能理解。

这有帮助吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM