Groovige Filterkriterien bei findAll in einer Liste

Ich versuche, dynamische Filter mit findAll auf einer Liste zu erstellen. Ich habe eine Variable, die nur dann in den Filter aufgenommen werden muss, wenn sie nicht null ist.

 @Test
    void testSample(){
        def list = [ new Employee(age:22, isManager:false), 
                     new Employee(age:23, isManager:true), 
                     new Employee(age:22, isManager:true) ] as Set

        def var = 22;
        String query1 = "it.age == var && it.isManager == true "
        String query2 = "it.isManager == true"

        println list
        println list.findAll { var ? query1 : query2 } // Should give 1 record age = 22 and manager
        var = null;
        println list.findAll { var ? query1 : query2 } // should give 2 records-only manager

    }

Beide geben alle Aufzeichnungen ab. Gibt es überhaupt eine Möglichkeit, dies unter einer Bedingung zu erreichen, ohne mehrere Abfragen schreiben zu müssen?

Sieht wie folgt aus (funktioniert aber nicht)

println list.findAll{
                if(var) it.age == var &&
                it.isManager == true
        }

Antworten auf die Frage(1)

Ihre Antwort auf die Frage