【问题标题】:Contains value pairs across two fields - Groovy包含跨两个字段的值对 - Groovy
【发布时间】:2019-06-29 16:50:37
【问题描述】:

我有一个包含两个字段的数据集:Department_ID 和 Vendor_ID。 我想标记 Department_ID 等于某个值且 Vendor_ID 等于某个值的任何记录。但是,我有很多对我想标记。不必有冗长的重复信息的脚本,我想要一些简短而简单的东西。

旧逻辑: ${(DPT=='10'&& VND=='234' || DPT=='9'&& VND=='13' || DPT=='200'&& VND=='4987' || DPT= ='598' && VND=='123')?"是":"否"}

首选逻辑: ${['10','9','200','598'].contains(DPT)&&['234','13','4987','123'].contains(VND)?"是":"否"}

首选逻辑的问题在于,它会标记满足这些值的任何组合的记录。即,它会标记具有 DPT=='10'&& VND=='13' 的记录...我需要包含功能,但它只查找某些对。

【问题讨论】:

    标签: arrays list groovy multiple-columns contains


    【解决方案1】:

    您可以将这些对放入一个集合中,然后检查该集合是否包含它们。例如

    def known = [
        // DPT, VND
        ["10","123"],
        ["20","456"],
    ].toSet()
    
    assert known.contains(["30","789"])==false
    assert known.contains(["10","789"])==false
    assert known.contains(["30","123"])==false
    assert known.contains(["10","123"])==true
    

    【讨论】:

      【解决方案2】:

      您可以检查是否存在一对:

      ${[['10', '234'], ['9', '13'], ['200', '4987'], ['598', '123']].contains([DPT, VND])?"Yes":"No"}
      

      【讨论】:

      • 完美!!谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-25
      • 2017-06-02
      相关资源
      最近更新 更多