How to get attribute values of another layer with QGIS expressions

To get an array of all your values of a different layer with condition you can use

 aggregate('layer','array_agg',"fieldname","fieldname">50)

or

 aggregate('layer','array_agg',$id,"fieldname">50)

to get the feature IDs. You could also apply $currentfeature to get the features or $geometry for their geometries instead of $id.

So to reproduce your result at 3 with delimiters you could use array_to_string(aggregate('layer','array_agg',$id,"fieldname">50),',') for example, but this is of course a string again.

Also you can access the attributes as stated in "The Problem" via attribute(get_feature_by_id('layer',feature_id),'field') or attributes(get_feature_by_id('layer',feature_id)).


So seeing your screenshot I get what you are trying to do. This reminds somehow on Displaying vertex coordinates of a polygon or line without creating a new layer. We have quite the same issue here. If you wish to draw several lines from one feature to several destinations, one somehow would need the ability to iterate. Not sure how this could be done. Yet...


Instead of collecting the values and selecting back the geometry using this value, you can directly collect the geometries.

collect_geometries (
    array_foreach (
        aggregate (
            'points',
            'array_agg',
            $geometry,
            "value">500 
        ) ,
    make_line(start_point($geometry),@element)
    )
)

enter image description here