Grails Groovy gsp:合并列表

Grails Groovy gsp:合并列表,grails,groovy,gsp,Grails,Groovy,Gsp,我正试图在普惠制中将许多名单合并成一个单一的名单。例如: 类A有一个B类实例列表 当我尝试使用表达式:${a.findAll(some_condition).b}时,我得到的是b的实例列表 我希望表达式返回一个列表,其中b的所有实例都属于满足某些条件的a,您可以尝试: ${a.findAll(some_condition).b.flatten()} 这会给你一张单子 ${a.findAll(some_condition).b.flatten().unique()} 还应删除重复项等待。如果a

我正试图在普惠制中将许多名单合并成一个单一的名单。例如:

  • 类A有一个B类实例列表

  • 当我尝试使用表达式:
    ${a.findAll(some_condition).b}
    时,我得到的是b的实例列表

  • 我希望表达式返回一个列表,其中
    b
    的所有实例都属于满足
    某些条件的
    a
    ,您可以尝试:

    ${a.findAll(some_condition).b.flatten()}
    
    这会给你一张单子

    ${a.findAll(some_condition).b.flatten().unique()}
    

    还应删除重复项

    等待。如果a.findAll返回一个对象的集合,为什么直接在集合中调用属性b?这行得通吗?它不应该像:${yourList*.b}???@TiagoFarias
    *
    是可选的。我不知道。我想这会让你更快乐。如果这是常规groovy对象,那么Tim的答案是最好的。如果
    A
    B
    是具有关系的域对象,则可以使用
    projections
    ()或HQL获得与某些
    A
    相关的所有
    B
    实例,这些实例满足条件。@TiagoFarias
    *。
    符号并非在所有情况下都是无用的。对于属性,它是可选的(例如:
    foos.name
    foos*.name
    都返回一个
    name
    值的列表),但是如果要对所有内容运行方法,则需要使用
    *。
    ,(例如
    foos*.toString()
    ,没有
    *。
    它会调用列表中的
    字符串,而不是每个单独的值)。这正是我想要的。谢谢