【问题标题】:Groovy dynamic query from String to findAll on a collection从 String 到集合上的 findAll 的 Groovy 动态查询
【发布时间】:2016-12-22 17:07:48
【问题描述】:

我有一个像这样接收字符串查询的应用

"age >= 21"

使用这个字符串参数我需要过滤一个集合。有什么办法可以用 Groovy findAll 或其他东西来做到这一点?我已经尝试过以下方法,但它只返回整个列表:

String query1 = "it.age >= 21"

println list.findAll { it -> query1 } 

【问题讨论】:

    标签: groovy collections closures


    【解决方案1】:

    这应该做你想做的:

    def list = [[age:20],[age:23],[age:19],[age:21]]
    def query = "it.age >= 21"
    def sh = new GroovyShell()
    def closure = sh.evaluate("{it -> $query}")
    ​println list.findAll(closure)​
    

    注意it -> 在这种情况下不是可选的,因为闭包需要知道它接受一个参数

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-20
      • 1970-01-01
      • 1970-01-01
      • 2021-12-30
      • 2019-06-20
      • 2018-12-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多