## 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 funtion `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

1. 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. Use `get_feature()` for that.

2. Than for this feature, get the value of the attribute named `area`, using the function `attribute()`.

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][1]. 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.


  [1]: https://docs.qgis.org/3.22/en/docs/user_manual/expressions/functions_list.html