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

擬似コードの問題
For(listSのすべてのアカウント){
ListAS.add(listSのS__cフィールド); }

問題のセクションで述べたことを試しましたが、アクセスできません。私を助けてください。

私が得るエラーはこれです:リストにはSObjectに割り当てるための複数の行があります。

助けてくれてありがとう。

注:すべてのAS_cのforループ内のS_cフィールドにアクセスしたくありません。すべてのアカウントでアクセスしたいと思います。

4

1 に答える 1

1

親子関係をクエリしている場合t.AS__r、Accountオブジェクトのフィールドは、実際にはサブクエリ条件を満たすオブジェクトのリストです。したがって、必要なのはlistAS.add(t.AS__r);belistAS.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 に答える