Apex FP provides functional constructs for SObject
collections!
Transform SObjects
with a simple declarative API.
List<Opportunity> largeOpportunities = SObjectCollection.of(opportunities)
.filter(Fn.Match
.field(Opportunity.Amount).greaterThan(150000)
.also(Opportunity.AccountId).equals(accountId))
.asList();
List<Task> prospectingTasks = SObjectCollection.of(Trigger.new)
.filter(Fn.Match.recordFields(new Opportunity(Stage = 'Prospecting')))
.mapAll(Fn.MapTo(Task.SObjectType)
.setField(Task.Subject, 'Follow up')
.mapField(Task.WhatId, Opportunity.Id))
.asList();
Map<Id, List<Account>> accountsByParentId = SObjectCollection.of(accounts).groupByIds(Account.ParentId);
Decimal averageOpportunityValue = SObjectCollection.of(opportunities).mapToDecimal(Opportunity.Amount).average();
Find more examples in the documentation.