0

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

问题:

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); }

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

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

非常感谢您的帮助。

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

4

1 回答 1

1

当您查询父子关系t.AS__r时,Account 对象上的字段实际上是满足子查询条件的对象列表。因此,您需要做的就是更改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的类型为字符串 - 但希望您明白这一点。

这有帮助吗?

于 2012-07-08T08:38:16.033 回答