2013-05-30 27 views
0

想象我有一个嵌套的树像这样查找并返回一个嵌套的树状结构中的一员

invoices{ 
    invoice(date: new Date(106,1,2)){ 

     item(count:5){ 
      product(name:'ULC', dollar:1499){ 
       vendor(id:1) 
      } 
     } 
     item(count:1){ 
      product(name:'Visual Editor', dollar:499){ 
       vendor(id:3) 
      } 
     } 
    } 
    invoice(date: new Date(106,1,2)){ 
     item(count:4) { 
      product(name:'Visual Editor', dollar:499){ 
       vendor(id:4) 
      } 
     } 
    } 

,让我们假设我已经把这个到发票类的列表的一个实例。现在,在供应商的ID为3的树中,返回供应商类的实例的最佳方式是什么?

这是错误的,但像

供应商的Myvendor =发票* .item *。产品* .vendor.find {i.id == 3}

回答

0

每个spread将收集到的属性列表,因此,您的最后一个find {}将会在的list中寻找结果。您可以将vendor列表弄平:

def vendor = invoices*.items*.product*.vendor.flatten().find { it.id == 3 } 
assert vendor