包含跨两个字段的值对 - Groovy

Contains value pairs across two fields - Groovy

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

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

首选逻辑: ${['10','9','200','598'].contains(DPT)&&['234','13','4987','123'].contains(越南盾)?"Yes":"No"}

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

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

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

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

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