+ Start a Discussion
snippets@sfsnippets@sf 

Why This is not possible

Query 

List<Account> accounts =  [Select Id, Name, (Select Id, Name From Contacts) From Account ]

 

for(Account a : accounts){
for(Integer i=0; i < a.Contacts.size() ; i++){
if(someCondition){ a.Contacts.remove(i);
} } }

 This should idealy remove contacts where condition is satisfied

 

But it dose not happen

 

 

Abhi_TripathiAbhi_Tripathi

You are not performing any of the DML process in the above code,

 

So perform some and then check the results, just by removing from the list records are not going to be deleted

snippets@sfsnippets@sf

Thanks Abhi,

But my expected output is not to delete but just not to display in the frontend.

one way to achive is through wrapper classes. but the question stands still the same 

Contacts is Wrapper Classes. but the Question is 

 

a.Contacts is a list Object;

for eg : list<Contact> cons = a.contacts;

What is possible

cons.remove(i);

what is not possible

a.contacts.remove(i);

 

 

 

Rahul AgarwalRahul Agarwal

Say there are three elements in a list and second element satisfies the if condition. Then you are trying to remove the second element from the list while you are pointing at the same element in the list.