The solution
array_sum(
array_foreach(
string_to_array ( "list of polygons" , ','),
attribute (get_feature (@layer, 'name', @element), 'area')
)
)
Explanation
The error in your expression is that you use the funtionfunction area()
with the argument @element
, but @element
returns the name of a polygon, whereas area()
expects a polygon's geometry as input.
The functions area()
as well as $area
calculate the area from the geometry. You, however, just want to add values that already exist in an attribute called area
.
How to implement
So inside the
array_foreach()
function, you get the name of one of the polygons. You then must identify the feature (line in your attribute table) of this element - like line 2 for feature B in your example. Useget_feature()
for that.Than for this feature, get the value of the attribute named
area
, using the functionattribute()
.
As you remarked in your comment, be aware where to use double quotes "
and where to use single quotes '
. Best see help for QGIS expression functions. A field name in single quotes returns the name of the field, a field name in double quotes returns the value stored in that field for the current feature.