Hi I am having an Sobject list. While iterating through the Sobject list using FOR loop, I can only able to get the Id not all the fields of the Sobject. Can someone please help me to solve the issue.


String objectFields = 'AccountShare';
String recordId = 'AccountId';
String object1= 'AccountAccessLevel,AccountId,CaseAccessLevel,ContactAccessLevel,Id,IsDeleted,LastModifiedById,LastModifiedDate,OpportunityAccessLevel,RowCause,UserOrGroupId' ;

String str1= 'Select '+objectFields+' from '+object1+' where '+recordId+' = :nameValue ';

List<Sobject> sobjList = Database.query(str1);

for(Sobject sobj :sobjList ){
 String s1=sobj.Id; // **working fine**

 String S2= sobj.accountId; // **Error objectLists Compile Error: Field expression not allowed for generic SObject** 


Need some urgent solution on it.

1 Answer 1


As the error says, you can't use fields other than Id on a generic SObject. Instead, you can use the get method to get the field value:

String s2 = (String)sObj.get('AccountId');

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.