是否可以根据另一个数组在逻辑应用程序中过滤一个数组?

Is it possible to filter an array in Logic apps based on another array?

在我正在开发的逻辑应用程序中,我希望数组 A 中的对象不存在数组 B 中的实体。数组具有以下结构:

数组A

[{"ExternalId": 1}, {"ExternalId": 2}]

数组B

[{"Id": 2}]

除了 id 之外,这些数组还包含更多属性,为简单起见,我将保留这些属性。

我想要的结果是根据数组 B 中不可用的 ExternalId 对数组 A 进行过滤,因此这应该会产生以下过滤后的数组:

[{"ExternalId": 1}]

我尝试为此使用 FilterArray 操作,但我不知道如何对其建模。根据 Workflow Definition Language 有一个 @contains 函数,但我无法以正确的方式构造它。

这样可以吗?有没有其他方法可以在 Azure 逻辑应用程序中实现此结果?

是的,我认为这还不可能 - 获得它的唯一方法如下,但现在 运行 在 Azure Functions 中可能更容易。

  1. 组成一个只有 "ExternalId" 值的新数组(这样你就可以在过滤器中使用 @contains() )
    1. 为数组 B 中的每一项创建一个 foreach 循环
    2. 在 foreach 循环中添加一个包含 { "body": "@item()['ExternalId']" }
    3. 的组合

在 foreach 循环之外,您现在可以执行 @body('Compose') 并且您将拥有一个 ExternalId 值数组(在上述示例中为 [ 1 ])。

现在在数组A上创建过滤数组,过滤条件为where @contains(body('Compose'), item())

将来我们计划支持 @select() @where() @orderby() 类型构造,这将使这更容易,以及映射数组操作 - 但仍在设计中。现在你可以选择上面的方法或调用 Azure 函数来处理 javascript/C#